先看标准的例子:
Test.java
/* 模拟注册 */ public class Test{ public static void main(String[] args){ //假如用户提供的用户名如下 String username = "xpleaf"; //注册 CustomerService cs = new CustomerService(); try{ cs.register(username); }catch(IllegalNameException e){ System.out.println(e.getMessage()); } } }
CustomerService.java
//顾客相关的业务 public class CustomerService{ //对外提供一个注册的方法 public void register(String name) throws IllegalNameException{ //完成注册 if(name.length()<6){ //异常 //创建异常对象 //IllegalNameException e = new IllegalNameException("用户名长度不能少6位"); //手动抛出异常 //throw e; throw new IllegalNameException("用户名长度不能少6位"); } //如果代码能执行到此处,证明用户名是合法的. System.out.println("注册成功!"); } }
IllegalNameException.java
/* 自定义“无效名字异常”. 1.编译时异常,直接继承Exception 2.运行时异常,直接继承RuntimeException */ public class IllegalNameException extends Exception{ //编译时异常 //public class IllegalNameException extends RuntimeException{ //运行时异常 //定义异常一般提供两个构造方法 public IllegalNameException(){} public IllegalNameException(String msg){ super(msg); } }
其实比较简单,只要把相关的类创建好就OK了,最关键是在异常处理类中继承Exception。
根据此,再写一个自定义异常,要求如果输入的数字大于100,则抛出异常:
Main_pro.java
import java.util.Scanner; public class Main_pro { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Please input a number for a:"); Scanner s = new Scanner(System.in); int a = s.nextInt(); Num_check check = new Num_check(); try{ check.checknum(a); } catch(NumError e){ System.out.println(e.getMessage()); } } }
Num_check.java
public class Num_check { public void checknum(int num) throws NumError{ if (num>=100){ throw new NumError("Error!"); } System.out.println("The number is normal."); } }
NumError.java
public class NumError extends Exception{ public NumError(){} public NumError(String msg){ super(msg); } }
通过上面两个例子,再对比Python中的异常处理,最大的感想是:Python的真的要简洁好多!当然,这是因为在Java中,每一个方法都要写成一个类,而在Python中,不一定要使用面向对象的程序设计思想,因此可以简洁很多。
关于Python异常处理的详细说明,可以参考前面我写的文章:
【Python之旅】第四篇(二):Python异常处理与异常捕捉
本文出自 “香飘叶子” 博客,请务必保留此出处http://xpleaf.blog.51cto.com/9315560/1704831
原文地址:http://xpleaf.blog.51cto.com/9315560/1704831