ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

异常(**)Exception

2022-08-03 08:35:12  阅读:129  来源: 互联网

标签:Exception int System catch println 异常 out


异常(**)Exception

1. 异常概念

  • 程序中的错误就称为异常。

  • java 程序中的错误【异常】,如果程序中出了异常,那么该异常会以对象的形式存在。异常对象由底层的jvm 创建。

  • 如果你的程序有问题,那么jvm会生成一个针对该异常的一个对象,并抛给你。

2. 异常体系

  • Throwable

    • Error

    • Exception

      • RuntimeException

      • CheckedException

3. try-catch

private static void test() {
Scanner scanner  = new Scanner(System.in);

System.out.println("请输入被除数:");
int a = scanner.nextInt();

System.out.println("请输入除数:");
int b = scanner.nextInt();

int result = 0;
try{
//可能产生异常的代码。
result = a / b;
System.out.println(2);
}catch(ArithmeticException e){
//catch 小括号类似于方法的参数。写的是产生的异常对象的类型。
System.out.println(e);
System.out.println("您输入了非法的被除数:0");
}

System.out.println(a +"\t除以\t" + b + "\t的结果是:"+result);

System.out.println("谢谢使用!!");
}

4. 多重 catch

private static void test() {
Scanner scanner  = new Scanner(System.in);
int result = 0;
try{
System.out.println("请输入被除数:");
int a = scanner.nextInt();

System.out.println("请输入除数:");
int b = scanner.nextInt();


//可能产生异常的代码。
result = a / b;
System.out.println(2);

System.out.println(a +"\t除以\t" + b + "\t的结果是:"+result);
}catch(ArithmeticException e){
//catch 小括号类似于方法的参数。写的是产生的异常对象的类型。
// 打印异常对象的堆栈信息
e.printStackTrace();
// System.out.println("您输入了非法的被除数:0");
}catch(InputMismatchException e){
// System.out.println("您输入了非数值型数据!");
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}

System.out.println("谢谢使用!!");
}

5. try-catch-finally

  • private static void test() {
    Scanner scanner  = new Scanner(System.in);
    int result = 0;
    try{
    System.out.println("请输入被除数:");
    int a = scanner.nextInt();

    System.out.println("请输入除数:");
    int b = scanner.nextInt();


    //可能产生异常的代码。
    result = a / b;
    System.out.println(2);

    System.out.println(a +"\t除以\t" + b + "\t的结果是:"+result);
    }catch(ArithmeticException e){
    //catch 小括号类似于方法的参数。写的是产生的异常对象的类型。
    //打印异常对象的堆栈信息
    e.printStackTrace();
    //System.out.println("您输入了非法的被除数:0");

    System.out.println(1/0);

    }catch(InputMismatchException e){
    //System.out.println("您输入了非数值型数据!");
    e.printStackTrace();
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    //最终一定会被执行的代码。
    System.out.println("谢谢使用!!");
    }
    }
  •  

6. try-finally

7. 面试题

static int test5(){
int num = 10;
try {
//先计算返回值。10
//最后返回先前计算的返回值。10
return num;
} finally {
//然后执行这里。11
num ++;
System.out.println(num);
}
}

8. throw

  • throw 是java的关键字。

  • 用在方法体中,用于抛出异常对象。

  • 只能抛出一个异常对象。

  •  

9. throws

  • throws 是java的关键字。

  • 用在方法的声明处。用于标注,方法执行的时候可能会抛出的异常对象的类型。

  • 语法:参数列表和方法体中间使用:throws 异常类型。

  • 异常类型可以是一个列表,使用逗号分隔。

  •     
    // 编译期异常的第二种解决方案。不建议的解决方案。告诉调用者,我这个方法,可能会抛出某种类型的异常对象。
    private static void test1() throws IOException,ArithmeticException {
    File file = new File("");

    // 编译期异常的第一种解决方案。建议的解决方案。
    file.createNewFile();
    }
  •  

10. 自定义异常

  • package com.qf.exception;

    public class TestAgeException {

    public static void main(String[] args) {
    Student student = new Student();

    try {
    student.setAge(70);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    class Student{
    private int age;

    public int getAge() {
    return age;
    }

    public void setAge(int age) throws AgeException,Exception{
    if(age < 0){
    // 抛出一个异常对象。自定义的异常对象。
    AgeException e = new AgeException(age);
    throw e;
    }else if(age >60){
    throw new Exception("过大的学生的年龄:"+age);
    }
    this.age = age;
    }
    }

    //自定义年龄异常类。
    class AgeException extends Exception{
    private int age;

    public AgeException(int age) {
    super();
    this.age = age;
    }

    @Override
    public String toString() {
    return "您设置了非法的年龄:"+age;
    }
    }

总结

  • try-catch-finally的使用。

  • throws的使用

  • throw的使用

  • 编译期异常的处理方法

    • package com.qf.exception;

      import java.io.File;
      import java.io.IOException;

      public class TestCheckedException {

      public static void main(String[] args) {
      try {
      test1();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }

      private static void test() {
      File file = new File("");

      // 编译期异常的第一种解决方案。建议的解决方案。使用try-catch 结构捕获处理。
      try {
      file.createNewFile();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }


      // 编译期异常的第二种解决方案。不建议的解决方案。告诉调用者,我这个方法,可能会抛出某种类型的异常对象。
      private static void test1() throws IOException,ArithmeticException {
      File file = new File("");

      // 编译期异常的第一种解决方案。建议的解决方案。
      file.createNewFile();
      }
      }
  • 异常体系

  •  

标签:Exception,int,System,catch,println,异常,out
来源: https://www.cnblogs.com/bxmhdh/p/16545751.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有