java自定义异常,java自定义异常处理

本文目录一览:

java中自定义异常为何要继承exception类

java.lang.Exception类是Java中所有异常的直接或间接父类。即Exception类是所有异常的根类。

1、异常的分类:

① 非运行时异常(Checked Exception)

② 运行时异常(Runtime Exception/Unchecked Exception)

public class Exception

extends Throwable

Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。

public class RuntimeException

extends Exception

RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

a) RuntimeException类直接继承自Exception类,称为运行时异常。Java中所有的运行时异常都直接或间接的继承自RuntimeException.

Java中所有的异常类都直接或间接的继承自Exception。

2、异常的处理:

对应非运行时异常,必须对其进行处理。处理方式有两种:

使用try…catch…finally语句块进行捕获

在产生异常的方法所在的方法声明throws Exception

对于运行时异常,可以不对其进行处理,也可以对其进行处理。一般情况下都不对其进行处理。

3、捕获异常:

try {

FileInputStream fs = new FileInputStream(“D:/temp/a.txt”);

} catch (FileNotFoundException e) {

System.out.println(“catch…”);

e.printStackTrace();

} finally{

System.out.println(“finally…”);

}

4、抛出和捕获异常:

4.1、把异常交给JVM处理:

public class ExceptionTest {

public static void execute() throws Exception {

System.out.println(“execute…”);

throw new Exception();

}

public static void main(String[] args) throws Exception {

execute();

}

}

4.2、或者使用try catch语句块捕获异常:

public class ExceptionTest {

public static void execute() throws Exception {

System.out.println(“execute…”);

throw new Exception();

}

public static void main(String[] args) {

try {

execute();

} catch (Exception e1) {

e1.printStackTrace();

}

}

}

5、自定义异常:

自定义异常通常是定义一个继承自Exception类的子类。一般情况下我们都会直接继承自Exception类,而不会继承某个运行时的异常类。

5.1、创建自定义异常:

public class MyException extends Exception{

public MyException(){

super();

}

public MyException(String msg){

super(msg);

}

}

5.2、在类中使用异常:

public class ExceptionTest {

public static void execute(String a) throws MyException {

System.out.println(“execute…”);

if(“true”.equals(a)){

throw new MyException(“参数不能为 true”);

}

}

}

5.3、捕获自定义异常:

public static void main(String[] args) throws MyException {

execute(“true”);

}

6、异常使用注意事项:

当使用多个catch语句块来捕获异常时,需要将父类的catch语句块放到子类型的catch块之后,这样才能保证后续的catch可能被执行,否则子类型的catch将永远无法到达,Java编译器会报编译错误。

如果try语句块中存在return语句,那么首先会执行finally语句块中的代码,然后才返回。

如果try语句块中存在System.exit(0)语句,那么久不会执行finally语句块的代码了,因为System.exit(0)会终止当前运行的JVM。程序在JVM终止前结束执行。

java如何自定义一个可捕获的异常

1)先定义一个类继承Exception(或者别的RuntimeException等);

2)然后写个方法可能抛出这个异常,并且什么情况下会抛出异常;

3)调用这个方法,写try,catch语句,捕获这个异常;

小例子,你参考看下:

class UserNotFoundException extends RuntimeException {

public UserNotFoundException() {}

public UserNotFoundException(String message) {

super(message);

}

public void f() throws UserNotFoundException {

throw new UserNotFoundException(“用户名不对”);

}

public class Exception  {

public static void main(String args[]) {

try {

new UserNotFoundException().f();

} catch (UserNotFoundException e) {

System.out.println(e.getMessage());

}

}

}

java自定义异常问题

class ParameterNumberException extends Exception{

ParameterNumberException(){

super(“参数个数异常!”);}

public String toString(){

return “ParameterNumberException”;}

}

class ParameterFormatException extends Exception{

ParameterFormatException(){

super(“参数格式异常!”);

public String toString(){

return “ParameterFomatException”;}

}

public class NullPointer2 {

public static void main(String args[])throws ParameterNumberException,ParameterFormatException{

try{

if(args.length2)

throw new ParameterNumberException();

else

throw new ParameterFormat();

}

catch(ParameterNumberException e){

System.out.println(e);

e.printStackTrace();}

catch(ParameterFomatException e){

System.out.println(e);

e.printStackTrace();}

}

}

java自定义异常类问题

异常类的理解,个人看法

是不是说输出异常的信息啊,在自定义类中输出异常的信息

然后在程序中当判断到输入的数据是小于0,调用小于0的异常类里的输出信息

大于100,就调用大于100的异常类里的输出信息

java自定义异常类

public void MyException extends Exception{

public MyExceprion(){

System.out.println(“自定义异常”);

}

}

public class Exam{

public static void mul() throws MyException{

if(自己写条件){

throw new MyException();

}

}

}

这个应该能看懂吧,我只是写了个结构没写完整程序的,你看懂这个就行,定义一个自定义异常,然后在你需要的地方抛出异常,在主方法中调用方法的时候达到一定条件就会抛出异常

java自定义异常类 super() showMessage()

//定义一个自己定义Exception类,名为MyException,然后继承Exception

class MyException extends Exception{

//重写构造方法

public MyException(String message){

super(message); //这句话的意思是调用Exception的有参构造方法。

}

}

//运行一下

public class ExceptionDemo{

public static void main(String[] args){

try{

throw new MyException(“我的异常”); //这里已经发生异常了,我抛出

}catch(MyException e){//这里写我们自定义的异常类

System.out.println(e.getMessage());//这句话是调用父类的getMessage方法,将“我的异常”输出。

}

}

/*public void showMessage(){

System.out.println(msg);

}*/ //这句话就是自定义showMessage方法,输出e.showMessage();//模仿父类异常,而不是重写父类异常的getMessage()方法

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/207062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-08 14:19
下一篇 2024-12-08 14:20

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论