Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 380|回复: 0

-1-6 java 异常简单介绍 java异常 异常体系 Throwable 分类 throws和throw 异常处理 自定义异常

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-26 18:04:36 | 显示全部楼层 |阅读模式
     
    异常
     
    异常:异常就是Java程序在运行过程中出现的错误。
    异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。
    其实就是Java对不正常情况进行描述后的对象体现。
    Throwable
            |--Error        严重问题,我们不处理。
            |--Exception
                    |--RuntimeException        运行期异常,我们需要修正代码
                    |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
     
     
    Exception和Error的子类名都是以父类名作为后缀。
     
    Java中的异常被分为两大类:编译时异常和运行时异常。
    所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译时异常
    编译时异常
    •Java程序必须显示处理,否则程序就会发生错误,无法通过编译
    运行时异常
    •无需显示处理,也可以和编译时异常一样处理
     
     
    Throwable基本方法
    getMessage()
    •获取异常信息,返回字符串。
    toString()
    •获取异常类名和异常信息,返回字符串。
    printStackTrace()
    •获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
    printStackTrace(PrintStream s)
    •通常用该方法将异常内容保存在日志文件中,以便查阅。
     
     
    throws和throw
    throws
    •用在方法声明后面,跟的是异常类名
    •可以跟多个异常类名,用逗号隔开
    •表示抛出异常,由该方法的调用者来处理
    •throws表示出现异常的一种可能性,并不一定会发生这些异常
    throw
    •用在方法体内,跟的是异常对象名
    •只能抛出一个异常对象名
    •表示抛出异常,由方法体内的语句处理
    •throw则是抛出了异常,执行throw则一定抛出了某种异常 
     
    异常处理过程
     
    JVM的默认处理
            把异常的名称,原因,位置等信息输出在控制台,但是程序不能继续执行了。
    自己处理
            try...catch...finally
                    自己编写处理代码,后面的程序可以继续执行
            throws
                    把自己处理不了的,在方法上声明,告诉调用者,这里有问题
     

    try

    {

     

    需要检测的代码;

    }

    catch

    (异常类  变量)

    {

     

    异常处理代码;

    }

    finally

    {

     

    一定会执行的代码; 

    }

    Finally代码块控制的语句体一定会执行

    只有一种情况不会被执行。就是在之前执行了System.exit(0)

    主要用于释放资源

     
    常见变形形式
                            try...catch...finally
                            try...catch...
                            try...catch...catch...
                            try...catch...catch...fianlly
                            try...finally
     
     
     
    自定义异常
    自定义类继承Exception或者其子类,只需要提供无参构造和一个带参构造即可
    通过构造函数定义异常信息。

    例:

    Class DemoException extends Exception
    
    {
    
      DemoException(String message)
    
      {
    
      super(message);
    
      }
    
    }

     

    通过throw将自定义异常抛出。
     
    RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。
    1.父的方法有异常抛出,子的重写方法在抛出异常的时候必须要小于等于父的异常,也就是必须抛出相同的异常或异常的子类
    2.父的方法没有异常抛出,子的重写方法不能有异常抛出,如果子类方法内有异常发生,那么子类只能try,不能throws
    3.父的方法抛出多个异常,子的重写方法必须比父少或者小,不能抛出新的异常
     
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-3-9 22:09 , Processed in 0.061549 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表