黑马程序员技术交流社区

标题: Java中的异常 [打印本页]

作者: Kalpa___    时间: 2019-10-10 11:49
标题: Java中的异常
一、异常的体系结构



二、异常处理方式

- try-catch方式处理异常
      try {
              可能出现异常的代码;
      } catch(异常类名 变量名) {
              异常的处理代码;
      }
  执行流程
  - 程序从 try 里面的代码开始执行
  - 出现异常,就会跳转到对应的 catch 里面去执行
  - 执行完毕之后,程序还可以继续往下执行
- Throwable成员方法
  - 常用方法
      方法名                                  说明                    
      public String getMessage()           返回此 throwable 的详细消息字符串
      public String toString()             返回此可抛出的简短描述           
      public void printStackTrace()        把异常的错误信息输出在控制台        
- 编译时异常和运行时异常的区别
  - 编译时异常
    - 都是Exception类及其子类
    - 必须显示处理,否则程序就会发生错误,无法通过编译
  - 运行时异常
    - 都是RuntimeException类及其子类
    - 无需显示处理,也可以和编译时异常一样处理
- throws方式处理异常
  - 定义格式
        public void 方法() throws 异常类名 {
            
        }
  - 注意事项
    - 这个throws格式是跟在方法的括号后面的
    - 编译时异常必须要进行处理,两种处理方案:try...catch …或者 throws,如果采用 throws 这种方案,将来谁调用谁处理
    - 运行时异常可以不处理,出现问题后,需要我们回来修改代码
- 自定义异常
  - 自定义异常类
        public class ScoreException extends Exception {
            public ScoreException() {}
            public ScoreException(String message) {
                super(message);
            }
        }
  - 老师类
        public class Teacher {
            public void checkScore(int score) throws ScoreException {
                if(score<0 || score>100) {
                    throw new ScoreException("你给的分数有误,分数应该在0-100之间");
                } else {
                    System.out.println("成绩正常");
                }
            }
        }
  - 测试类
        public class Demo {
            public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入分数:");
                int score = sc.nextInt();
                Teacher t = new Teacher();
                try {
                    t.checkScore(score);
                } catch (ScoreException e) {
                    e.printStackTrace();
                }
            }
        }
   
  





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2