Java自定义异常-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

Java自定义异常

简介:
+关注继续查看

    先看标准的例子:

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中,不一定要使用面向对象的程序设计思想,因此可以简洁很多。




本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1704831,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java虚拟机定义
<div class="mod-top" id="card-container" style="margin-bottom:18px; font-family:arial,宋体,sans-serif; font-size:14px; line-height:24px"> <div class="card-summary nslog-area clearfix" style="line-h
1483 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9497 0
Java虚拟机定义
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。[1]  中文名 java虚拟机
1239 0
Springboot自定义异常处理
1.自定义异常类 import lombok.Data; @Data public class UserException extends RuntimeException { private Long id; public UserException(Long id) { super("user not exist"); this.
1216 0
Java自定义注解
什么是注解: Annotation注解就Java提供了一种元程序中元素中的元素关联的任何信息和任何元数据(metadata)的途径和方法。 Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。
988 0
Java定义枚举
public enum UserStatus {     Normal(1),     Lock(2);     private int value;     private UserStatus(int value)     {      this.value=value;     }     public int getValue(){         return
837 0
【Java学习笔记】自定义Java异常
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.前言: 你的程序总有一天会崩溃掉,在崩溃掉的时候我们要知道它在哪,为了什么而崩溃掉,数据的保存或者丢失情况如何等问题。
613 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13186 0
SpringBoot-08-之统一化json输出与自定义异常捕获
为及时了解异常,以及避免返回的json格式不统,将每次请求的结果都返还一样的形式。 此处统一为:{"code":响应代号码,"msg":信息,"data":数据} 具体效果如下: result--format.
1296 0
13694
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载