java学习笔记(十一)—— 异常机制

使用异常和不使用异常的区别

我们用1/0作测试,加上异常处理之后,程序的返回值是0,并且可以往下继续执行。

不使用try-catch处理异常的话,程序的返回值是1,而且不继续往下执行了

一、异常机制

1. 什么是异常

        程序在运行过程中遇到的一些“意外”,例如文件找不到、文件格式不对、网络连接失败、用户输入不符合要求等等影响程序健壮性的“意外”。之前需要我们程序员把这些意外都想到,然后用if语句的形式写下来,如果出现以外,则对用户输出cout"文件找不到",然后让用户重新输入(写一个循环)。异常机制就是java已经把这些能想到的意外都封装好了,我们不用自己再去写if--cout了,直接调用异常处理就行。

2. 异常体系结构

 分类:

  1. Error
  2. Exception
    1. 运行时异常:编译时检查不出来,运行时才会发现和预期结果不一样
      1. 数组越界
      2. 空指针
      3. 除数为0
    2. 非运行时异常:编译时就会报错,必须要处理。
      1. ClassNotFound
      2. FileNotFound
      3. I/O类异常
      4. SQL类异常

3. java异常处理机制

1. 作用?

一般程序遇到没有处理过的异常就停止了,java的异常处理机制就是让程序遇到异常后处理一下这个异常,使得程序正常运行下去。

2. 5个关键字

5个关键字:try、catch、finally、throw、throws

3.try-catch-finally 捕获异常

一般try-catch-finally连着使用,举个栗子。 下面代码的a/b可能会发生错误,比如用户让b=0的时候(在以前没有异常机制的时候,我们一般会写if(b==0) cout"被除数不能为零!",但是现在我们上面都不用写,直接try-catch)

加上try-catch-finally捕获异常

 PS01:try和catch是必须项。finally处理善后工作,可写可不写。无论被try监控的区域异常与否都会进入finally代码块,所以finally中通常用来处理I/O流、资源、Scanner、数据库等的关闭工作(无论是否异常都要关掉这些东西)。

 PS02: 多个catch捕获多个异常,把大的放后面(throwable是最大,包括所有error和exception)

PS03:快捷键:选中被try监控的区域,按Ctrl+Alt+T

4. throw 和 throws抛出异常

        run()

       {

4. 自定义异常

一般java给出的内置的异常就够用了,如果开发大型项目可能会涉及到自定义异常。

自定义异常需要继承Exception类。

1) 自定义异常类MyException.java

package com.example.demo04;

/**
 * 自定义异常:数值大于10为异常
 */
public class MyException extends Exception{
    public int detail;

    public MyException(int a){
        this.detail=a;
    }

    @Override
    public String toString() {
        return "MyException{" +
                "异常=>" + detail +
                '}';
    }
}

2)测试类

package com.example.demo04;

public class Main {

    public static void test(int a) throws MyException {
        //大于10,异常
        if(a>10){
            throw new MyException(a); //抛出自定义异常
        }
        //不异常
        System.out.println("参数"+a+" is OK");
    }

    public static void main(String[] args)  {
        try {
            test(12);  //12>10,抛出异常
        } catch (MyException e) {
            System.out.println(e);
        }
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值