玩转java自定义异常的教程(java异常菜鸟教程)

本文目录一览:

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 自定义异常是怎么使用的?

throws是用来声明一个方法可能抛出的所有异常信息

throw则是指抛出的一个具体的异常类型。

通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。

throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;

throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。

java 如何自定义异常 用代码展示 真心靠谱

首先自定义一个异常类 public class ActionException extends Exception{ public String returnMessage; public ActionException(String returnMessage){ this.returnMessage = returnMessage; } public String getReturnMessage(){ return this.returnMessage; } 代码中如果用到这个自定义的异常类,这里的代码只是做了个演示 private void validate(int a,int b)throws ActionException{ if(ab){ throw new ActionException(“a b”); } if(ab){ throw new ActionException(“a b”); } } 业务逻辑代码中 public String process(){ try{ validate(a,b); }catch(ActionException ae){ System.out.println(ae.getReturnMessage()); } }

如何用Java程序来编写一个异常?

class

MyException

extends

Exception

//自定义的异常类

继承Exception类

{

private

String

exceptionName;

//定义一个私有变量,用来为自定义异常

public

MyException(){}

//创建一个无参数的构造函数

public

MyException(String

exceptionName){

//创建一个有参数的构造函数,传入的参数为前面定义的异常名称

this.exceptionName=exceptionName;

}

public

String

getExceptionName(){

//定义一个方法,提供给外部来获取私有变量

return

this.exceptionName;

}

public

static

void

main(String

[]

args){

try{

System.out.println(“自定义的异常类对象”);

throw

new

MyException(“自定义的异常”);//抛一个自定义的异常类对象,传入的参数就是给控制台看的异常

}catch(MyException

e){

System.out.println(“异常信息:”+e.getExceptionName());

}

}

}

我已经尽力你……你懂的!

如何编写和应用Java的自定义异常类

编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。常用的编写自定义异常类的模式如下:

public class CustomException extends Exception { //或者继承任何标准异常类 public CustomException() {} //用来创建无参数对象

public CustomException(String message) { //用来创建指定参数对象

super(message); //调用超类构造器

} 当然也可选用Throwable作为超类。

其中无参数构造器为创建缺省参数对象提供了方便。第二个构造器将在创建这个异常对象时提供描述这个异常信息的字符串,通过调用超类构造器向上传递给超类,对超类中的toString()方法中返回的原有信息进行覆盖。来讨论一个具体例子。假设程序中需要验证用户输入的表示年龄的数据必须是正整数值。我们可以按照以上模式编写这个自定义异常类如下: public class NegativeAgeException extends Exception { //或者:extends Throwable public NegativeAgeException() {} public NegativeAgeException(String message) { super(message); }} 下面是应用这个自定义异常类的例子: //完整程序存在本书配套资源目录为Ch11中名为NegativeAgeExceptionTest.java…try{ String ageString = JOptionPane.showInputDialog(“Enter your age: “); if (Integer.parseInt(ageString) 0) throw new NegativeAgeException(“Please enter a positive age”); else JOptionPane.showMessageDialog(null, ageString, “Age”, 1);}catch(NegativeAgeException e){ System.out.println(e);}… 或者,可以创建一个缺省对象,然后在catch中打印具体信息,如: throw new NegativeAgeException(); …catch (NegativeAgeException e) { System.out.println(“Please enter a positive age”); 将产生与第一个例子相同的效果。

11.7.2 自定义异常处理

无论是利用标准API异常类来处理特殊的异常,或者编写自定义的异常类来达到同样目的,问题的关键是:!–[if !supportLists]–1.span times=”” new=”” roman’;=”” font-size-adjust:=”” none;=”” font-stretch:=”” normal;=”” x-system-font:=”” none”=”” style=”padding: 0px” !–[endif]–当这个异常发生时,如何及时捕获这个异常。!–[if !supportLists]–2.span times=”” new=”” roman’;=”” font-size-adjust:=”” none;=”” font-stretch:=”” normal;=”” x-system-font:=”” none”=”” style=”padding: 0px” !–[endif]–捕获这个异常后,如何产生精确的异常处理信息。 毋庸置疑,我们不可能期待JVM自动抛出一个自定义异常,也不能够期待JVM会自动处理一个自定义异常。发现异常、抛出异常以及处理异常的工作必须靠编程人员在代码中利用异常处理机制自己完成。一般情况下,发现和抛出一个自定义异常通过在try程序块中利用if和throw语句完成,即: try { … if (someExceptionConditon == true) { throw new CustomException(“A custom exception xxx occurred. Please check your entry…”) … }catch (CustomException e) { …} 而打印异常处理信息可以在抛出时包括在构造器的参数中,或者包括在处理这个异常的catch中。另外应该注意在自定义异常发生之前,有可能产生标准异常的情况。例如,在一个需要验证年龄必须是正整数值的程序中,利用自定义异常类,如NegativeAgeException,验证输入的年龄是否正整数,即: try { … if (Integer.parseInt(ageString) 0) throw NegativeAgeException(“Please enter a positive age”); else … } catch (NumberFormatException e) { System.out.println(e); } catch (NegativeAgeException e) { System.out.println(e); } … 注意在这个代码中,如果ageString是非法整数字符串,如“25ab”,系统将首先抛出NumberFormatException,而不会执行throw NegativeAgeException(“Please enter a positive age”)。所以应该在catch中加入对NumberFormatException的处理,如以上代码所示。

本文出自 “海外咖啡豆 – 高永强的博客天地” 博客

Java用户自定义异常处理

一、第一种定义方式,继承Exception类

public class MyFirstException extends Exception {

public MyFirstException() {

super();

}

public MyFirstException(String msg) {

super(msg);

}

public MyFirstException(String msg, Throwable cause) {

super(msg, cause);

}

public MyFirstException(Throwable cause) {

super(cause);

}

//自定义异常类的主要作用是区分异常发生的位置,当用户遇到异常时,

//根据异常名就可以知道哪里有异常,根据异常提示信息进行修改。

}

二、 第二种定义方式:继承Throwable 类

public class MySecondException extends Throwable {

public MySecondException() {

super();

}

public MySecondException(String msg) {

super(msg);

}

public MySecondException(String msg, Throwable cause) {

super(msg, cause);

}

public MySecondException(Throwable cause) {

super(cause);

}

}

三、测试

/**

* 自定义异常类的使用

* @author new

*

*/

public class TestMyException {

public static void firstException() throws MyFirstException{

throw new MyFirstException(“\”firstException()\” method occurs an exception!”);

}

public static void secondException() throws MySecondException{

throw new MySecondException(“\”secondException()\” method occurs an exception!”);

}

public static void main(String[] args) {

try {

TestMyException.firstException();

TestMyException.secondException();

} catch (MyFirstException e1){

System.out.println(“Exception: ” + e1.getMessage());

e1.printStackTrace();

} catch (MySecondException e2){

System.out.println(“Exception: ” + e2.getMessage());

e2.printStackTrace();

}

//当一个try块后面跟着多个catch块时,如果发生的异常匹配第一个catch块的参数,便将异常处理权利交给第一个catch块。

//如果发生的异常与第一个catch块不匹配,便看是否与第二个catch块匹配,依次下去,如果到最后依然无法匹配该异常,

//便需要在方法声明中添加一条throw语句,将该异常抛出。

//因此,在有多个catch块,而且每次处理的异常类型具有继承关系时,应该首先catch子类异常,再catch父类异常。

//比如,如果MySecondException继承MyFirstException,那么最好将catch (MySecondException e2)放在前面,

//把catch (MyFirstException e1)放在后面。

}

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
NEOMNEOM
上一篇 2024-10-03 23:45
下一篇 2024-10-03 23:45

相关推荐

  • MQTT使用教程

    MQTT是一种轻量级的消息传输协议,适用于物联网领域中的设备与云端、设备与设备之间的数据传输。本文将介绍使用MQTT实现设备与云端数据传输的方法和注意事项。 一、准备工作 在使用M…

    编程 2025-04-29
  • Python3.6.5下载安装教程

    Python是一种面向对象、解释型计算机程序语言。它是一门动态语言,因为它不会对程序员提前声明变量类型,而是在变量第一次赋值时自动识别该变量的类型。 Python3.6.5是Pyt…

    编程 2025-04-29
  • Deepin系统分区设置教程

    本教程将会详细介绍Deepin系统如何进行分区设置,分享多种方式让您了解如何规划您的硬盘。 一、分区的基本知识 在进行Deepin系统分区设置之前,我们需要了解一些基本分区概念。 …

    编程 2025-04-29
  • 写代码新手教程

    本文将从语言选择、学习方法、编码规范以及常见问题解答等多个方面,为编程新手提供实用、简明的教程。 一、语言选择 作为编程新手,选择一门编程语言是很关键的一步。以下是几个有代表性的编…

    编程 2025-04-29
  • Python如何判断质数和异常处理

    本文主要介绍Python如何判断质数和异常处理,其中包括多个方面的内容。 一、判断质数 1、定义:质数是指除了1和它本身两个因数外,没有其他的因数。 2、判断方法: (1)从2到n…

    编程 2025-04-29
  • Qt雷达探测教程

    本文主要介绍如何使用Qt开发雷达探测程序,并展示一个简单的雷达探测示例。 一、环境准备 在开始本教程之前,需要确保你的开发环境已经安装Qt和Qt Creator。如果没有安装,可以…

    编程 2025-04-29
  • 猿编程python免费全套教程400集

    想要学习Python编程吗?猿编程python免费全套教程400集是一个不错的选择!下面我们来详细了解一下这个教程。 一、课程内容 猿编程python免费全套教程400集包含了从P…

    编程 2025-04-29
  • 光模块异常,SFP未认证(entityphysicalindex=6743835)——解决方案和

    如果您遇到类似optical module exception, sfp is not certified. (entityphysicalindex=6743835)的问题,那么…

    编程 2025-04-29
  • Python烟花教程

    Python烟花代码在近年来越来越受到人们的欢迎,因为它可以让我们在终端里玩烟花,不仅具有视觉美感,还可以通过代码实现动画和音效。本教程将详细介绍Python烟花代码的实现原理和模…

    编程 2025-04-29
  • Python中自定义函数必须有return语句

    自定义函数是Python中最常见、最基本也是最重要的语句之一。在Python中,自定义函数必须有明确的返回值,即必须要有return语句。本篇文章将从以下几个方面对此进行详细阐述。…

    编程 2025-04-29

发表回复

登录后才能评论