ICode9

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

异常(**)Exception

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

标签: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

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

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

ICode9版权所有