JavaSE-异常处理

1.概述

Java异常中有ErrorException类,它们都继承自Throwable。
在这里插入图片描述

1.1异常的分类

  1. 编译时异常:Exception(由程序员导致)
  2. 运行时异常:RuntimeException
  3. 虚拟机错误:error(系统或底层资源错误)

2.关键字

throws:用于方法签名中,指定方法可能抛出的异常类型。(可以指定多个异常对象)
throw:用于在方法内部抛出一个异常对象。(只能抛出一个异常对象)
finally:定义一个代码块,该代码块中的代码无论是否发生异常都会执行。

try {
    // 可能引发异常的代码
} catch (Exception e) {
    // 异常处理代码
} finally {
    // 最终执行的清理代码
}

3.自定义异常

public class test_02 {  
    /*  
     *自定义异常:整数在0~10的范围内  
     */    public static void main(String[] args) {  
        int num = 11;  
        try {  
            getInt(num);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
  
    public static void getInt(int num) throws IntException {  
        if (num >= 0 || num <= 10) {  
            throw new IntException("不在0~10范围内");  
        }  
    }  
}  
  // 自定义
class IntException extends Exception {  
    public IntException() {  
    }  
    public IntException(String s) {  
        super(s);  
    }  
}

4.异常题目

4.1 final,finally,finalze区别

  • final 用于声明不可变的实体,可以应用于变量、方法和类。
  • finally 用于定义在异常处理中无论是否发生异常都会执行的代码块。
  • finalize 是一个方法,用于在对象被垃圾回收前执行清理操作。(不常用)

4.2 判断一个字符串是否为IP格式

// 判断ip地址  
public static boolean isIP(String input) {  
    String[] s = input.split("\\.");// 正则表达式分割字符串  
    if (s.length != 4) {  
        return false;  
    }  
    for (String s1 : s) {  
        try {  
            int num = Integer.parseInt(s1);  
            if (num < 0 || num > 255) {  
                throw new NumberFormatException("IP地址格式错误!!!");  
            }  
        } catch (NumberFormatException e) {  
            e.printStackTrace();  
        }  
    }  
    return true;  
}

4.3 return和finally的执行顺序对返回值影响

tryfinally至少含有一个return语句:

  • finally语句块会执行
  • finally语句块没有return,finally对变量的值修改无效。(return局部变量保存在栈帧顶部,finally修改原来栈帧位置的局部变量,最后还是会返回栈帧顶部的变量,所以会执行,但是不return值(栈帧顶部))
    都含有return语句:
  • return 值以finally语句块内为准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值