java异常处理

打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

java异常处理

软件程序在运行过程中,可能出现意外(Exception),运行中不期而至的问题。

  • 检查性异常:用户错误或问题引起的异常,程序员无法预见的
  • 运行时异常:可能被程序员避免的异常,可以在编译时被忽略
  • 错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如栈溢出
java把异常当做对象来处理,基于java.lang.Throwable
api定义了许多异常类,主要分为错误(Error)和异常(Exception)两类
部分如下图:

error类对象由java虚拟机生成抛出,大多数与执行者无关
例如:

  • OutOfMemoryError:虚拟机运行错误
  • NoClassDefFoundError:类定义错误
  • LinkageError:链接错误
异常:
运行时异常:

这些异常一般是程序逻辑错误引起的,和程序员有关
区别:

  • Error是灾难性的致命错误,程序无法控制,一般java虚拟机(jvm)会选择终止线程
  • Exception通常情况是可以被程序处理的
异常处理机制

五个关键词:
try,catch,finally,throw,throws
  1. int a = 1;
  2. int b = 0;
  3. //捕获多个异常从小到大
  4. try {//监控区域
  5.     System.out.println(a/b);
  6. }catch (ArithmeticException e){//如果出现ArithmeticException错误
  7.     System.out.println("程序出现错误");
  8.     //打印错误跟踪
  9.     System.out.println(e.fillInStackTrace());
  10.     System.exit(0);
  11. }catch (Exception e){
  12.     System.out.println("程序出现错误11");
  13.     System.out.println(e.fillInStackTrace());
  14.         }finally {
  15.     //不论是否出现错误都执行
  16.     System.out.println("finally");
  17. }
  18. /*程序出现错误
  19. java.lang.ArithmeticException: / by zero
  20. finally
复制代码
选中代码块快捷键ctrl+alt+t(surround with)
  1. int a = 1;
  2.     int b = 0;
  3.     if(b==0){
  4.         throw  new ArithmeticException();//主动抛出异常
  5.     }
  6. }
  7. /*out :Exception in thread "main" java.lang.ArithmeticException
  8. */
  9. //方法抛出异常
  10. int a = 1;
  11. int b = 0;
  12. isZero(b);
  13.     //假设这个方法处理不了异常,向上抛出异常
  14. public static void isZero(int b) throws ArithmeticException{
  15.         if(b==0){
  16.             throw  new ArithmeticException();
  17.         }
  18.     System.out.println("aa");
  19.     }
  20. /* out:Exception in thread "main" java.lang.ArithmeticException
  21.         at com.xxx.Student.isZero(Student.java:12)
  22.         at com.xxx.Student.main(Student.java:7)
复制代码
自定义异常

继承Exception
  1. public class MyException extends  Exception{
  2.     //传递数字大于10
  3.     private  int detail;
  4.     public MyException(int detail) {
  5.         this.detail = detail;
  6.     }
  7.     //打印异常信息
  8.     @Override
  9.     public String toString() {
  10.         return "MyException{" +
  11.                 "detail=" + detail +
  12.                 '}';
  13.     }
  14. }
  15. //b=11
  16. public static void isZero(int b) throws MyException {
  17.         if(b>10){
  18.             throw  new MyException(b);
  19.         }
  20.     }
  21. //out:MyException{detail=11}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表