首页 > 编程知识 正文

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

时间:2023-12-23 11:38:05 阅读:319242 作者:ENTM

本文目录一览:

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)放在后面。

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。