java异常详解(java异常处理规则(新手必看))
导语:JAVA脱水学习-Java异常解析、异常处理
Java 异常处理程序的运行过程中总会有异常出现,如何处理异常成了需要考虑的问题。Java 在处理出错的地方,通过抛出某种异常,然后通过捕获这个异常并对其做出处理,来避免程序出现不可预料的错误。
常见的示例如下:
public class ex{ public static void main(String[] args) { try { int re = divide(1, 0); } catch (IllegalArgumentException e) { e.printStackTrace(); } } // 除法 public static int divide(int n, int m) { if (m == 0) { throw new IllegalArgumentException("除数不能为0"); } return n / m; }}异常的作用
运行下上面的代码,得到一个异常结果,打印下:
第 1 行异常信息,第 2 行异常出现的地方,第 3 行异常方法调用处。
可以直观的看出代码在哪里出现了异常,出现了什么异常。有了这些信息我们就能分析是什么导致异常的出现。查看代码我们发现调用除法 divide() 方法时传了个除数 0,这时候我们就能对代码做相应调整。如此就能知道异常的作用:
1.哪里出错?
2.出了什么错?
3.为什么出错?
找出原因后就能对代码做出调整,给出友好提示或禁止错误输入。
异常继承关系除了异常还有一类是错误 Error,错误出现后代码执行中断,Error 不能被捕获,只能由 JVM 抛出,一般都属于系统级错误。Java 中的异常和错误都继承自 Throwable 类。继承关系如图:
Error 和 Exception 都有各自的子类,用户也可以自定义继承子类来处理自己的异常或错误。
捕获异常抛出一个异常用 throw,捕获异常用 try…catch,多个异常可以有多个 catch 语句块,还可以定义 finally 语句块,表示最终执行的代码块,如:
public class ex{ public static void main(String[] args) { try { testException(11); } catch (IllegalArgumentException e) { System.out.println("第一个异常:" + e.getMessage()); } catch (Exception e) { System.out.println("第二个异常:" + e.getMessage()); } finally { System.out.println("最后执行的代码"); } } public static void testException(int n) throws IllegalArgumentException, Exception { if (n < 0) { throw new IllegalArgumentException("参数错误异常"); } else if (n > 10) { throw new Exception("其它异常"); } }}
打印结果:
有时后会发现没有捕获异常,也会抛出异常信息。如:
public class ex{ public static void main(String[] args) { testException(-1); } public static void testException(int n) throws RuntimeException { if (n < 0) { throw new RuntimeException("运行时异常"); } }}
运行时抛出异常:
发现异常可以分为两大类:
Exception:或其子类异常,在程序中必须使用 try…catch 处理异常。
RuntimeException:或其子类异常,如果不用 try…catch 处理,则出现异常时,JVM 会自动抛出异常,并终止程序。
所以不管何种异常都建议使用 try… catch 处理,避免程序出错。
Java 常见异常类Java.lang.NullPointerException 程序遇上了空指针java.lang.ClassNotFoundException 未找到类java.lang.ArithmeticException 数学运算异常java.lang.ArrayIndexOutOfBoundsException 数组下标越界java.lang.IllegalArgumentException 参数错误java.lang.IllegalAccessException 没有权限访问还有很多其它的异常和错误,这里不一一例举,写代码碰到后了解下即可。
本文内容由小涵整理编辑!