黑马程序员——Java基础——异常

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

异常:就是程度在运行时出现不正常的情况。
它分为两种情况:一种是严重的不可处理的,Error类;另一种是非严重可以处理的,Exception类。它们两个有共性,因为它们有着一个父类,Throwable类,这个是异常中最高的超类。

一般 Exception 异常的处理方式有:try{ } catch ( ) { } finally { }

如果定义的函数存在有异常的可能性,要在函数上抛出一个异常:throws Exception ,这个是声明函数有可能会出现问题,告诉调用者要对其进行处理,可以用 try…catch…. , 也可以通过 throws 抛给其他调用的人,最终如果都没人处理(譬如在主函数),就会抛给JVM(虚拟机),运用默认的处理方式去处理。

finally:存放一定会被执行的代码,通常用于关闭资源。
(譬如关闭数据库的时候会用到)

示例如下:


public class ExceptionTest {

    public static void xiangChu(int a,int b) throws Exception{
        int c=a/b;
        System.out.println(c);
    }

    public static void main(String[] args){
        try{
            xiangChu(8,0);
        }catch(Exception e){
            System.out.println(e.toString()+"   除数不能为0");
        }
    }
}

自定义异常:class xxException extends Exception{ }
它实际上就是一个类继承Exception这个类的子类,通过建立它的构造函数来定义自己的异常提示内容,可在构造函数中写 super( message ) 调用父类的构造方法来完成。
自定义异常的例子如下:

class FuShuException extends Exception{
    FuShuException(){
        super("除数不能为负数!");
    }
}

public class ExceptionTest2 {

    public static void xiangChu(int a,int b) throws FuShuException{
        if(b<0) 
            throw new FuShuException();
        int c=a/b;
        System.out.println(c);
    }

    public static void main(String[] args){
        try{
            xiangChu(9,-2);
        }catch(Exception e){
            System.out.println(e.toString());
        }
    }
}

throws 和 throw 的区别:
throws是在函数上声明异常类;
throw是在函数内抛出异常对象。

有一个异常类比较特殊,函数上如果声明了它,调用者调用时不对它进行捕捉处理,编译会通过;或者在函数内抛出它的对象,函数上不声明,它也会通过;它就是 RuntimeException(运行时异常)。

第 一种情况的代码,编译会通过:

class YunSuan{
    public int div(int a,int b) throws RuntimeException{
        return a/b;
    }
}

public class RuntimeExceptionTest {
    public static void main(String[] args){
        YunSuan a=new YunSuan();
        int c=a.div(6, 0);
        System.out.println(c);
    }
}

第二种情况的代码,编译也会通过:

class YunSuan2{
    public int div(int a,int b){
        if(b<0)
            throw new RuntimeException("除数不能为负数!");
        return a/b;
    }
}

public class RuntimeExceptionTest2 {
    public static void main(String[] args){
        YunSuan2 a=new YunSuan2();
        int c=a.div(6, 0);
        System.out.println(c);
    }
}

所以异常有分为两类:
1、编译时被检测的类(非运行时);
2、编译时不被检测的类,就是上面的RuntimeException类,以及它的子类。

注意:
如果异常在函数内已经解决了,那么在函数上就不用声明了。
反则,如果在函数内还抛出了一个异常对象,那么就要在函数上声明异常类了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值