1.throw:(针对对象的做法)
抛出一个异常,可以是系统定义的,也可以是自己定义的。下面举两个例子:
抛出Java中的一个系统异常:
public class One {
public void yichang(){
NumberFormatException e = new NumberFormatException();
throw e;
}
public static void main(String[] args){
One test = new One();
try{
test.yichang();
}catch(NumberFormatException e){
System.out.println(e.getMessage());
}
}
}
抛出一个自定义的异常: public class People {
public static int check(String strage) throws MyException{
int age = Integer.parseInt(strage);
if(age < 0){
throw new MyException("年龄不能为负数!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
System.out.println(myage);
}catch(NumberFormatException e){
System.out.println("数据格式错误");
System.out.println("原因:" + e.getMessage());
}catch(MyException e){
System.out.println("数据逻辑错误");
System.out.println("原因:" + e.getMessage());
}
}
}
public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
this.name = name;
}
public String getMessage(){
return this.name;
}
}
2.throws:(针对一个方法抛出的异常)
抛出一个异常,可以是系统定义的,也可以是自己定义的。
抛出java中的一个系统异常:
public class One {
public void yichang() throws NumberFormatException{
int a = Integer.parseInt("10L");
}
public static void main(String[] args){
One test = new One();
try{
test.yichang();
}catch(NumberFormatException e){
System.out.println(e.getMessage());
}
}
}
抛出一个自定义异常:
public class People {
public static int check(String strage) throws MyException{
int age = Integer.parseInt(strage);
if(age < 0){
throw new MyException("年龄不能为负数!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
System.out.println(myage);
}catch(NumberFormatException e){
System.out.println("数据格式错误");
System.out.println("原因:" + e.getMessage());
}catch(MyException e){
System.out.println("数据逻辑错误");
System.out.println("原因:" + e.getMessage());
}
}
}
public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
this.name = name;
}
public String getMessage(){
return this.name;
}
}
3.那么下面我要说究竟什么时候用哪种:
如果是系统异常的话可以什么都不用做,也可以针对方法抛出一个异常,因为系统异常是可以被系统自动捕获的,所以这个异常究竟是要在方法内部解决还是交给上层函数去解决其实效果是一样的。但是我查了很多资料,即使会抛出异常能被系统所捕获的话还是建议针对方法写一个throws,因为这样在完成一个大型任务的时候可以让别的程序员知道这里会出现什么异常。
如果是自己定义的异常,则必须要用throws抛出该方法可能抛出的异常,否则编译会报错。
4.注意:文章源自http://blog.chinaunix.net/uid-26359455-id-3130427.html

最新文章

  1. 解析大型.NET ERP系统 自动更新
  2. SQList
  3. js原生碰撞检测
  4. Reapter合并行
  5. Android下实现控件的叠加显示
  6. FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
  7. HDU 1695 GCD 容斥
  8. python3-day3(函数-返回值)
  9. 基于FPGA的Cordic算法实现
  10. 将cookie 转换成字典格式
  11. 宝塔面板安装在根目录www下
  12. emwin之2D图形绘制问题
  13. 2017-2018-2 20155309南皓芯《网络对抗技术》Exp2 后门原理与实践
  14. java 生成Http 头部date格式的string-RFC 1123 Date Representation in java
  15. 20145118 《Java程序设计》 实验报告四
  16. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例
  17. @Value在Controller中取值
  18. python接口自动化4-绕过验证码登录(cookie)【转载】
  19. 牛客小白月赛1 D 多项式乘法 【循环】
  20. php中int类型在不同平台所占不同字节数理解

热门文章

  1. Python for Informatics 第11章 正则表达式一(译)
  2. eclipse安装color theme插件
  3. SQLServer大数据优化方法若干
  4. 让 cell 显示底部线条时,总是有几个线条被隐藏.
  5. flex 遍历Object或者JSON对象内容的实现代码
  6. 对AFN的二次封装
  7. scroll、offset和client的区别
  8. [转] - bashrc与profile的区别
  9. app设计需注意的
  10. 无法删除DLL文件解决方法(转)