首页 > 编程语言 >java异常

java异常

时间:2024-02-24 09:55:28浏览次数:25  
标签:java 处理 try 关键字 catch 异常 throw

java异常

异常分类

  1. Throwable是所有异常子类的超类

  2. exception子类:编译器异常,进行编译,java程序出现问题

  3. error子类:错误,必须修改源代码

产生过程

  1. JVM判断异常,并产生包含异常信息的对象,如果异常产生的方法没有try--catch方法,如果没有则把异常对象返回main方法
  2. main方法也判断是否有try-catch方法,如果没有则把这个异常抛回JVM
  3. JVM用红字打印异常的内容、位置、原因

异常的处理

throw关键字
  1. 作用:可以使用throw关键字在指定的方法中怕抛出异常
  2. 使用格式:throw new xxxException("产生原因");
  3. 注意:
    • throw关键字必须写在方法内部
    • throw关键字后边new的对象必须是Exception的子类对象
    • throw关键字抛出指定的异常对象,我们就必须处理这个异常
      1. throw关键字后边创建的是RuntimeException或者RuntimeException的子类对象,我们可以不处理,默认交给JVM处理(打印异常对象,中断程序)
      2. throw关键字后边创建的是编译异常(写代码的时报错),我们就必须处理这个异常,要么throws要么try-catch
  4. Objects非空判断(这个类里边是由静态方法组成,这些方法是null-Save(空指针安全的或者容忍空指针))
  public static <T> T requireNonNull(T obj){
  if(obj == null){
  throw new NullPointerException();
  }
  return obj;
  }
  //判断空指针,是则抛出异常
   
throws关键字:处理异常的第一种方法
  1. 作用:当方法内部抛出对象的时候,那么就必须处理这个异常对象可以使用throw关键字处理对 象,对象声明抛出给方法调用者处理, 最终交给JVM处理(中断处理)
  2. 使用格式:在方法声明时使用
    修饰符 返回值类型 方法名(参数列表) throw AAAException(){}//抛出的异常可以不止一个,用逗号隔开
  3. 注意:
    • throw关键字必须写在方法声明处
    • throws关键字后边声明异常必须是Exception或者Exception的子类
    • 方法内部如果抛出的对异常对象有子父类关系,那么只写父类就行
try-carch关键字:异常处理的第二种方式,自己处理异常
  1. 格式
  try{
  //可能出错的代码
  }catch(/*异常类名, 变量名*/){
   
  }
  1. 注意

    • try中可能会抛出多个异常对象,那么就可是使用多个catch来处理异常对象
    • 如果try中产生异常,那么就可以使用多个catch来处理异常对象, 执行catch中的处理逻辑,继续执行try-catch之后的代码
    • 如果try中没有异常, 那么久不会执行catch中处理异常的逻辑
Throwable类中定义了三个处理异常的方法
  • String getMessage()返回此throwable的简短描述
  • String toString()返回此throwable的详细消息字符串
  • void printStackTrace()JVM打印异常对象,默认此方法,打印异常的信息是最全面的
finally代码块
  1. 无论是否出现异常,都会运行

  2. 注意

    • finally不能单独使用,必须和try一起使用
    • fianlly一般用于资源释放(资源回收), 无论是否出现异常,最后都要资源回收
    • trycatch中一般将父类写在下边子类在上
    • finally中如果有return,那么将会返回return
    • 子类方法抛出的异常不能比父类的大
自定义异常
  1. java提供的异常类,不够我们使用,需要自己定义一些异常类格式:
  public class XXXExcepiton extends Exception/RuntimeException{
  //添加一个空参数的构造方法
  //添加一个带异常信息的构造方法
  }
   
   
   
  1. 注意
    • 自定义异常类一般都是以Exception结尾,说明该类是一个异常类
    • 自定义异常类,必须的继承Exception或者RuntimeException继承Exception:那么自定义的异常类就是一个编译期异常;如果方法内部抛出了编译期异常,就必须处理这个异常,要么throws,要么try...catch继承RuntimeException:那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理)

标签:java,处理,try,关键字,catch,异常,throw
From: https://www.cnblogs.com/stevenduxiang/p/18030772

相关文章

  • Java锁的思想和区别
    乐观锁VS悲观锁乐观锁和悲观锁是两种处理并发访问的不同策略,用于确保多个操作不会同时修改同一资源而导致数据不一致的问题。它们的区别在于处理并发时的思想和实现方式:乐观锁:思想:认为在大多数情况下,读操作远远多于写操作,因此假设在绝大多数情况下并发冲突是不会发生的,直到出......
  • Javascript/DOM:如何删除 DOM 对象的所有事件侦听器
    Javascript/DOM:如何删除DOM对象的所有事件侦听器一、重写重写EventTarget添加监听事件方法addEventListenerif(EventTarget.prototype.original_addEventListener==null){EventTarget.prototype.original_addEventListener=EventTarget.prototype.addEventList......
  • Java语法之HelloWorld!
    HelloWorld入门随便新建一个文件夹(coed),存放代码新建一个Java文件文件后缀名为.JavaHello.java编写代码publicclassHello{ publicstaticvoidmain(String[]args){ System.out.print("Hello,World!"); }}编译javacjava文件,会生成一个class文件运......
  • 什么是Java中的SPI机制
    SPI,全称ServiceProviderInterface,是Java中提供的一种服务发现机制它允许应用程序动态地加载和使用第三方提供的服务实现,而无需在代码中引用这些实现类。JavaSPI是基于接口编程思想的具体体现,通过将服务接口和其实现分离,从而具备更好的可扩展性和可维护性如何定义一个Java......
  • Java事件侦听器学习记录
    前言我们监听事件之前要有事件源source,创建事件源(Event),发布事件(publishEvent),然后才能到监听事件。事件驱动机制是观察者模式(称发布订阅)具体实现,事件对象(Event)相当于被观察对象(Subject),事件监听(EventListener)相当于观察者(Observer)1、包结构(个人): 2、创建事件源(Event)......
  • 异常 app key or app secret must be initialed
     物联网平台移动开发sdk。在android应用的问题。按照文档集成后,运行抛异常(仅调用SDKManager.init(this);)异常摘录片段如下:java.lang.RuntimeException:Unabletocreateapplicationcom.kong.home_iot_control.MainApplication:com.alibaba.cloudapi.sdk.exception.SdkExc......
  • java面向对象之封装-抽象-继承-组合-多态五种概念一网打尽
    说明曾经在学习java面向对象时,你是否会为面向对象的封装-继承-抽象-多态-组合等各种概念搞得稀里糊涂,乃至反复阅读,背诵其相关概念,结果一段时间过后又还给了时间。。。这种经历简直令人发指,让人无法忍受,难道就没有哪个地方能把它一次说清楚,老百姓看了以后纷纷醍醐灌顶,不再重蹈覆......
  • java中 break和continue区别
    breakcontinue◆break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环不执行循环中剩余的语句。(break语句也在switch语句中使用)◆continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句接着进行下一次是否执行循环的判......
  • java的基本循环结构之For循环
    1、For循环虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句--for循环,使一些循环结构变得更加简单。◆for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。◆for循环执行的次数是在执行前就确定的。语法格式如下:for(初始化;布尔表......
  • python调用Javascript实践
    一、背景知识1、Node.jsjavacript的运行环境有两个:浏览器、node.jsNode.js是一个开源与跨平台的JavaScript运行时环境。它是一个可用于几乎任何项目的流行工具!Node.js在浏览器外运行V8JavaScript引擎(GoogleChrome的内核)。这使Node.js表现得非常出色。运行js的命......