在我的代码中,在使用非整数(例如17.9)给出年龄值后,我无法捕获异常
另外,我的最终没有打印出来<是否有语法错误??
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class isVote {
public static void vote(int age){
if (age>18 || age == 18) {
System.out.println("Person can vote");
} else {
System.out.println("Person cannot vote");
}
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter age : ");
int age = Integer.parseInt(br.readLine());
try {
vote(age);
} catch (NumberFormatException e) {
System.out.println("Invalid age");
}
finally{
System.out.println("This is final ");
}
}
}
我nteger.parseInt会抛出未经检查的NumberFormatException,如果我们尝试通过它传递尝试转换非整数值。
以下示例抛出未经检查的异常。
Integer.parseInt("two")
Integer.parseInt("2.2")
正如我们现在所知,parseInt抛出异常。我们可以在try-catch中调用parseInt方法来处理异常。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Main {
public static void vote(int age){
if (age>=18) {
System.out.println("Person can vote");
} else {
System.out.println("Person cannot vote");
}
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter age : ");
String age = br.readLine();
try {
vote(Integer.parseInt(age));
} catch (NumberFormatException e) {
System.out.println("Invalid age : "+age);
} finally {
if (br!=null)
br.close();
}
}
}
最后,块具有不同的功能,它不用于捕获try-catch中的异常。如果不使用,finally可以用于关闭打开的流,以避免资源泄漏。最后,不会在代码中调用块,因为代码在try块之前中断。
由于该方法,parseInt()
将抛出NumberFormatException
,您需要将其包含在try
块中。
只需在try
块中包含输入的行,如下所示:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class isVote {
public static void vote(int age){
if (age>18 || age == 18) {
System.out.println("Person can vote");
} else {
System.out.println("Person cannot vote");
}
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter age : ");
try {
int age = Integer.parseInt(br.readLine());
vote(age);
} catch (NumberFormatException e) {
System.out.println("Invalid age");
}
finally{
System.out.println("This is final ");
}
}
}
输入:<代码>17.9
输出:
Enter age : Invalid age
This is final
问题内容: 将字符串解析为字节时出现异常 问题答案: 这是因为默认的parse方法要求使用十进制格式的数字来解析十六进制数字,请使用以下parse: 其中16是解析的基础。 至于您的评论,您是对的。字节的最大值为0x7F。因此,您可以将其解析为并执行二进制与操作以获得LSB,即您的字节:
问题内容: 我正在尝试捕获“ android.database.sqlite.SQLiteException:错误代码5:数据库已锁定”异常,并带有: 由于某些原因,我仍然会收到错误消息,并且LogCat中没有显示“ caught”。我尝试捕获一般的“异常”,但这仍然行不通。怎么了? 更新, 我发现了这个问题,这确实很奇怪:由于某种原因,将goto10声明的db.insert()更改为db.ins
问题内容: 尽管我在日志中看到了异常,但似乎无法捕获到约束违例异常。 实体 我正试图抓住它 -它永远不会到达捕获块。 当我使用 捕获(异常e) 我捕获到“ javax.transaction.RollbackException:ARJUNA016053:无法提交事务。” 这是错误日志: 我究竟做错了什么 ? 更新>> 我当前的代码是: 日志是 环境:PostgreSQL 9.2 JBoss AS
我使用的是Spring Boot 2和Spring Boot starter数据jpa以及底层的MariaDB。 我有一个带有唯一键“用户名”的表。如果违反了此约束,我想捕获,但似乎Spring正在记录并且不会在记录后重新抛出(我最好的猜测)。被抛出。 我想在中捕获。 以下是几段代码片段: 堆栈跟踪:
问题内容: 我的IDE给我该行的错误 我试着抓住,但是并没有使错误消失。有什么想法吗? 问题答案: 扩展了,所以您的IDE本身就有了更深的麻烦-也许库导入被搞砸了?
我正在尝试捕获SocketTimeoutException,以便我的套接字保持活动状态,并且可以继续读取程序。不幸的是,无论我如何尝试捕获读取超时,我都无法捕获,因此应用程序关闭。