黑马程序员——异常里的那些事

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------



异常的概述:


异常;程序中,在运行的时候出现不正常的现象。java是面向对象的语言,异常也是一种对象


因此每次出现异常的时候,异常就会告诉你发生是什么事情。


异常基础体系:


java.lang.Throwable类,所有异常和错误的父类


Error类


所有错误的父类


Exception类


所有异常的父类


RuntimeException


NullPointerException


ClassCastException


IndexOutOfBoundsException


  错误,比较严重的问题,一旦出现了错误,程序根本不能运行,必须修改源代码。


异常,比较轻微的问题,一旦出现了异常,程序可以处理掉异常,继续运行


构造方法 空参数


构造方法 Throwable(String message)异常信息


? String getMessage()返回异常信息的详细字符串


? String toString()返回异常信息的简短描述


? void printStackTrace()将异常信息直接输出在控制台


异常的第一种处理方法:


try  catch 代码块处理


标准格式:


     try{


      被检测的代码,可能出现异常的代码


     }catch(异常类 变量){


         异常的处理方式


         变量.调用Throwable类的三个方法


异常的第二种处理方式抛出异常:


如果程序运行的时候,由于用户或者调用非法传递参数,导致程序出现问题,假如调用者真的传递了非法的数据,


需要手动抛出异常。在方法中,使用关键字throw 写异常对象,new 出来的.


错误: 未报告的异常错误Exception;程序中,有异常没有处理


方法内部抛出异常,不处理这个异常,交给调用者处理,谁调用我这个函数,谁处理这个异常。必须在方法的声明上,声明出来,我这个方法有异常,谁调用谁处理。


在方法的定义上,使用throws关键字,把异常声明出来,告诉调用者,如果你调用处理我的异常  throws 异常类


? throw : 只能写在方法内部,后面必须写 new 异常()


? throws: 只能写在方法声明上,后面必须写 异常类


编译时期异常和运行时期异常:


编译时期异常:调用了一个抛出异常的方法,不处理,编译失败


运行时期异常:RuntimeException类,和他所有的子类都属于运行时期异常


特点:如果方法内部用throw 抛出的是一个运行时期异常,此时方法声明上,不需要使用throws声明异常,


调用者不需要处理这个异常,Java工程师们设计运行时异常的初衷,运行时期异常一旦发生,程序必须停下来修改源代码,运行时期异常,是不能发生的


Person p = new Person();
p.show();
p =null;
p.show();空指针异常
int[] arr = {1,2,3};
arr[10] = 100;
if(arr[50] < arr[90])

数组越界,字符串越界,空指针异常,类型转换异常


自定义的异常:


Java原有异常体系中,很多的现象进行异常的封装,越界,类型转换,JDK中也有想不到的异常,所以自定义异常


第一步,入伙  继承 Exception 或者继承RuntimeException


第二步,传递异常信息,将异常信息传递给Exception的构造方法


注意:异常必须是Exception或者RuntimeException的子类,具备可抛性


finally代码块:
try{} catch(Exception e){} finally{}


try{} finally{}


finally代码块中的程序,必须要执行,不管程序有没有异常方法,finally中的程序必须执行


finally代码块,一般用于释放资源使用


例举代码:


/*
  finally代码块
*/
class ExceptionDemo4 
{
public static void main(String[] args) 
{
try{
method(10);
}catch(Exception e){
  e.printStackTrace();
}finally{
System.out.println("必须执行");
}
}


public static void method(int x)throws Exception{
          if (x == 0)
            throw new Exception();
 else
 System.out.println("=========");
}
}


子类继承父类后的异常细节:


子类继承后,重写父类的方法;


? 父类的方法不抛出异常,子类的方法不能抛出异常。如果子类的重写方法,调用了一个抛出异常的方法,子类只能try catch处理异常


? 如果父类的方法,抛出异常,子类的方法可抛可不抛,但是如果子类抛异常,抛出的异常不能大于父类方法抛出的异常


? 方法中可以不可以,抛出多个异常,每个异常需要在方法声明上throws声明出来,调用者写多个catch处理


? 多catch处理异常过程中,注意,最高的异常父类,写在最后面


例举代码:


/*
  子类父类中的异常处理
*/
class AException extends Exception
{
}
class BException extends AException
{
}
class CException extends Exception
{
}
class Fu
{
public void abc()throws Exception{}
}
class Zi extends Fu
{
public void abc()throws Exception{

}


public void method(int x)throws CException,AException{
   if(x==0)
throw new AException();
else
throw new CException();
}
}


class ExceptionDemo6 
{
public static void main(String[] args) 
{
Zi z = new Zi();
try{
z.method(1);
}
catch(Exception e){}
}
}
没有学不好,只有不努力~~——至自己!!!

  • 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、付费专栏及课程。

余额充值