Java异常学习

本文介绍了Java异常处理的基本概念,如Throwable、Exception和Error的区别,运行时异常与编译时异常,以及常见的异常处理方法和两种处理方式。还展示了如何自定义异常,并通过代码实例演示了如何使用try-catch-finally结构。
摘要由CSDN通过智能技术生成

异常

1.小概要

1.Throwable有两个重要的子类:Exception(异常)和Error(错误),二者都是Java异常处理的重要子类
2.Exception分为RuntimeException(运行时异常)和非运行时异常
  a)RuntimeException:运行时异常,除此之外的异常,其他的都叫做编译时异常
  b)非运行时异常:编译时异常,在编译前处理,又称为受控异常或者受检异常
3.两个重要的方法:
  a) getMessage():拿出构造方法中传入的参数、提示信息
  b) printStackTrace():打印详细的信息
4.两种处理方式:
  a)上抛:throws 没有能力处理,报给上一个调用它的方法,上一个也可以继续上抛,一直抛到main方法,
     main方法再上抛就会抛给JVM(但是这只是把问题抛给了更高的一级,没有进行处理)
  b)捕获异常:
	try{}catch(){}
	一旦异常发生,可以上抛,在没有到达main方法之前,可以捕捉并处理
//异常处理代码块

try{
  //可能出现异常的代码
}catch(异常类型1 变量名1){
  //处理异常的方式1
}catch(异常类型2 变量名2){
  //处理异常的方式2
}catch(异常类型3 变量名3){
  //处理异常的方式3
}
 ······
 finally{
  //一定会执行的代码
 }
 
// try-catch-finally 是将异常代码块放在catch语句中,捕获并处理异常,try-catch协调工作
//假设执行try语句抛出异常,程序马上转到匹配成功的catch语句执行,完成后执行finally语句块,结束后执行后续代码
//假设执行try语句未抛出异常,那么程序会跳过catch语句,但是会执行finally语句,结束后执行后续代码
//finally语句一定要联合try使用,没有try这个关键字不起作用
//不论try中发生了什么,finally子句都会执行,没有异常也会执行

2.自定义异常

//下面是自己简单写的一个自定义的异常

package com.HSY.Test;

public class Test extends Exception
{
    public void a() throws Exception
    {
        throw new Exception();
    }

    public void a(String b)
    {

    }

}

//两个构造方法:一个无参构造,一个有参构造
//继承:extends Exception
package com.HSY.Q;

import com.HSY.Test.Test;

public class Q
{
    public static void main(String[] args)
    {
        Test test = new Test();
        test.a();
    }
}

//这个时候 test.a() 会冒红,这时我们将光标移至a处
//idea会自动弹出使用 try/catch 环绕,点击便可快速构造一个异常,如下
package com.HSY.Q;

import com.HSY.Test.Test;

public class Q
{
    public static void main(String[] args)
    {
        Test test = new Test();
        try {
            test.a();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值