1、Java Exceptions
执行Java代码时,可能会发生不同的错误异常:程序员编写的编码错误,由于输入错误引起的错误或其他不可预见的情况。
发生错误时,Java通常会停止并生成错误消息。 技术术语是:Java将引发异常(引发错误)。
2、Java try catch
try
语句允许定义要执行的错误代码块。
如果在try块中发生错误,则catch
语句允许定义要执行的代码块。
try
和catch
关键字成对出现:
语法
try { // 要尝试的代码块 } catch(Exception e) { // 处理错误的代码块 }
考虑以下示例:
这将产生一个错误,因为myNumbers [10]不存在。输出将是这样的:
public class Main { public static void main(String[ ] args) { int[] myNumbers = {1, 2, 3}; System.out.println(myNumbers[8]); // 不存在会报错! } }
如果发生错误,我们可以使用try catch
来捕获错误并执行一些代码来处理该错误:
例如:
public class Main { public static void main(String[ ] args) { try { int[] myNumbers = {1, 2, 3}; System.out.println(myNumbers[8]); } catch (Exception e) { System.out.println("输出异常信息等其它操作"); } } }
3、finally
finally
语句可以在try catch
之后执行代码,而不管是否在try代码中出现异常:
例如:
public class Main { public static void main(String[] args) { try { int[] myNumbers = {1, 2, 3}; System.out.println(myNumbers[8]); } catch (Exception e) { System.out.println("输出异常信息等其它操作");
} finally { System.out.println("执行资源释放等相关代码"); } } }
4、throw关键字
throw
语句用于创建抛出自定义错误。
throw
语句与异常类型一起使用。 Java中提供了许多异常类型:ArithmeticException
,FileNotFoundException
,ArrayIndexOutOfBoundsException
,SecurityException
等:
例如:
public class Main { static void checkValue(int x) { if (x < 0) { throw new ArithmeticException("error is x < 0"); } else { System.out.println("x > 0"); } } public static void main(String[] args) { checkValue(15); } }
public class DemoThrow { public static void main(String[] args) { int a = DemoThrow.div(4,0); System.out.println(a); } public static int div(int a,int b) { if(b==0) throw new ArithmeticException("异常信息:除数不能为0");//抛出具体问题,编译时不检测 return a/b; } }
5、throws 关键字
throws关键字说明方法可能抛出的异常类型。
Java中有许多可用的异常类型:ArithmeticException
,ClassNotFoundException
,ArrayIndexOutOfBoundsException
,SecurityException
等。
例如:
publicclassExample{ publicstaticvoidmain(String[] args){ try { int result = divide(4,2); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } } publicstaticintdivide(int x,int y)throws Exception { int result = x/y; return result; } }
throw和throws之间的区别:
throw | throws |
用于引发方法的异常 | 用于指示方法可能抛出的异常类型 |
不能抛出多个异常 | 可以声明多个异常 |