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

占位符

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

如:

int a=10;

float b = 23.4f;

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

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

异常机制

70b2ceaea1934dc26c29317f8beacf3c.png

f665844d38f20b4756ade3b232225a36.png

三种情况:

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("程序结束");

}

}

d1c6524142345df44ef8194073b7e63a.png

d695ca0b45287392416141ad6f33e776.png

当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("程序结束");

}

}

c435a43dbfb54017e91c054ea5c77331.png

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;

}

}

}

86d0529f8b9203ac6f97d07b4c1a1b40.png 还可以这样制造异常

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();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值