Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 516|回复: 0

异常机制+java里的占位符如%d %f/。。。

[复制链接]
  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 798 天

    [LV.10]以坛为家III

    2050

    主题

    2108

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    724790
    发表于 2021-8-31 10:35:33 | 显示全部楼层 |阅读模式

    占位符

    Java中,%d和%f分别用来表示输出时,替换整型输出和浮点型输出的占位符。

    如:

    int a=10;

    float b = 23.4f;

    System.out.printf("整数是:%d,小数是:%f",a,b);

    输出结果是:整数是:10小数是:23.4

    异常机制

    三种情况:

    import java.util.InputMismatchException;
    import java.util.Scanner;
    /**
     * 1,未发生异常
     * 		try模块正常执行
     * 		执行完以后执行try catch后面的代码块
     * 2,发生了catch 捕获的异常
     * 		try模块剩余的代码将不再执行
     * 		执行对应的catch模块
     * 		继续执行try catch 后面的代码
     * 3,发生了未捕获的异常
     * 		try 模块剩余的代码不再执行
     * 		程序直接崩溃
     * 
     * @author tang
     *
     */
    public class Test01 {
    	public static void main(String[] args) {
    		Scanner input = new Scanner(System.in);
    		System.out.println("请输入被除数");
    		int n1 = 0;
    		try {
    			//可能会产生异常的代码块
    			n1 = input.nextInt();
    			System.out.println("被除数输入成功");
    		} catch (InputMismatchException e) {
    			//一旦发生了异常  并且匹配成功  要么就把异常的信息打印出来   要么就写入到日志文件
    			e.printStackTrace();
    			System.out.println("输入的必须是数字");
    		} 
    		
    		System.out.println("程序结束");
    		
    	}
    }
    

     

    当interger创建对象时传入不是数字类型的字符时,会报numberFormatException!!

    声明多个异常用逗号隔开!!

     

     

    finally关键字

     


    public class FinallyDemo {
    	public static void main(String[] args) {
    		Scanner input = new Scanner(System.in);
    		System.out.println("请输入被除数");
    		int n1 = 0;
    		int n2 = 0;
    		try {
    			//可能会产生异常的代码块
    			n1 = input.nextInt();
    			System.out.println("请输入除数");
    			n2 = input.nextInt();
    			System.out.println(n1/n2);
    		} catch (InputMismatchException e) {
    			//一旦发生了异常  并且匹配成功  要么就把异常的信息打印出来   要么就写入到日志文件
    			//e.printStackTrace();
    			System.out.println("输入的必须是数字");
    			return;
    		} catch (ArithmeticException e) {
    			System.out.println("发生了数学运算的异常");
    		} catch (Exception e) {
    			System.out.println("发生了未知异常");
    		}finally{
    			//finally 这个代码块  不管程序是否发生异常  总是会执行
    			//一般做一些关闭数据库连接   关闭io流等一些必须的操作
    			//System.exit(0);  只有手动退出虚拟机的时候   程序不会执行finally模块
    			//当代码块中有return的时候   先执行finally  再return
    			System.out.println("finally");
    		}
    		
    		System.out.println("程序结束");
    	}
    }
    

     

     

     

    throws关键字

    /**
     * throws   当一个方法内发生了异常
     * 			但是无法解决异常,则可以使用throws 将异常抛出    
     * 			哪里调用了该方法,哪里就获取到该异常
     * @author tang
     *
     */
    public class TestThrows {
    	public static void main(String[] args) throws InterruptedException {
    		test();
    	}
    	
    	public static void test() throws InterruptedException {
    		Thread.sleep(1000);
    	}
    }
    

     throw关键字(自定义异常对象的描述信息!)

    public class TestThrow {
    	public static void main(String[] args) {
    		Person wangcai = new Person();
    		try {
    			wangcai.setGender("ladyboy");
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    
    class Person{
    	private String name;
    	private String gender;
    	
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getGender() {
    		return gender;
    	}
    	public void setGender(String gender) throws Exception {
    		if ("男".equals(gender) || "女".equals(gender)) {
    			this.gender = gender;
    		}else {
    			Exception ex = new Exception("性别只能是男或女");
    			throw ex;
    		}
    	}
    	
    }
    

     自定义异常

     

    public class GenderException extends Exception{
    
    	public GenderException() {
    		super();
    	}
    
    	public GenderException(String arg0) {
    		super(arg0);
    	}
    	
    }
    
    public class AgeException extends Exception{
    
    	public AgeException() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    
    	public AgeException(String arg0) {
    		super(arg0);
    	}
    	
    }
    

     

    public class Person {
    	private String name;
    	private String gender;
    	private int age;
    	
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getGender() {
    		return gender;
    	}
    	public void setGender(String gender) throws GenderException {
    		if ("男".equals(gender) || "女".equals(gender)) {
    			this.gender = gender;
    		}else {
    			GenderException ex = new GenderException("性别只能是男或女");
    			throw ex;
    		}
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) throws AgeException {
    		if (age > 0 && age < 200) {
    			this.age = age;
    		}else{
    			AgeException ex = new AgeException("年龄必须是0~200");
    			throw ex;
    		}
    	}
    	
    	
    }
    

      还可以这样制造异常

    public class Test {
    	public static void main(String[] args) {
    		Person wangcai = new Person();
    		wangcai.setName("旺财");
    		try {
    			wangcai.setAge(300);
    			wangcai.setGender("ladyboy");
    		} catch (AgeException e ) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (GenderException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    }
    

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-10-17 22:26 , Processed in 0.068115 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表