自定义异常(Java/python版)

来源:互联网 发布:seo好找工作吗 编辑:程序博客网 时间:2024/05/14 13:28

自定义异常好处:

1.快速知晓异常原因

2.满足特定的业务需求

....

自定义异常毛病:增加了一些开发成本和工作量,项目没必要的话,也不一定非得要用上自定义异常。


 自定义异常使用

在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类,则需要继承 Exception 类。
  • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

可以像下面这样定义自己的异常类:

class MyException extends Exception{ }

让我们看一下实例demo吧


----华丽的分割线 java版

----如果控制台输入数字1,抛出自定义的异常:自定义异常

//自定义异常类继承了Exception(利用重写父类toString()方法)
public class 自定义异常 extends Exception {

@Override
  public String toString() {
    return "自定义异常!!!!";
  }
}

//test类进行测试

import java.util.Scanner;

public class test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
try {
if(n==1){
throw new 自定义异常();
}

} catch (自定义异常 e) {
System.out.println(e);
// TODO: handle exception
}

}
}

---如果Users的uSex!=1 && uSex ! = 2时,抛出自定义的异常:SexException

--首先Users实体类代码如下:

package cn.ExceptionDemo;

public class Users {
 private Integer uSex;

 
 public Integer getuSex() {
  return uSex;
 }

 public void setuSex(Integer uSex) throws Exception{
  if(uSex != 1 && uSex !=2){
   throw new SexException("性别模糊,无法辨认!");
  }else{
   this.uSex = uSex;
  }
 }

}

--自定义异常类:SexException类(利用构造方法构建)

package cn.ExceptionDemo;

public class SexException extends RuntimeException {

 public SexException(String msg){
  super(msg);
 }
 
}

--测试类

package cn.ExceptionDemo;

public class TSexException {

 public static void main(String[] args) {
  
  Users u = new Users();
  try {
   u.setuSex(3);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println(u.getuSex());
 }
}


----华丽的分割线  我们再来看一看python版

#控制台输入1报Aex异常,2报Bex,3报Cex

class Aex(Exception):
    def __str__(self):
        return "aex!"
class Bex(Exception):
    def __str__(self):
        return "bex!"
class Cex(Exception):
    def __str__(self):
        return "cex!"


num=int(input("请输入一个数字:"))
try:
    if num ==1 :
        raise Aex
    if num ==2:
        raise Bex
    if num ==3:
        raise Cex
    print("ok!")
except (Aex,Bex,Cex)as e :
    print(e)

通过上面的对比我们可以看到java与python版并无太大的区别,这里python的except就是java中的catch



原创粉丝点击