컴파일에서는 발견되지 않지만(문법 오류가 아니기 때문) 실행 중 오류(런타임오류)가 발견되는 경우.
제어문 사용(조건문)
private static void m1() {
int num=0;
if (num!=0) { // 비즈니스코드(업무코드)
System.out.printf("100 / %d = %d\n", num, 100/num);
}else { // 예외처리코드
System.out.println("0을 입력하면 안됩니다.");
}
}
try catch finally
private static void m1() {
int num=5;
try {
System.out.printf("100 / %d = %d\n", num, 100/num);
}catch (Exception e){
System.out.println("0을 입력하면 안됩니다.");
}
}
전통적 방식과 예외 처리 구문은 작동방식이 다르다.
// 가독성 좋은 코드
if (num!=0){
System.out.printf("100 / %d = %d\n", num, 100/num);
}else{
System.out.println("0을 입력하면 안됩니다.");
}
// 가독성 나쁜 코드
if (num==0){ // 참의 부분에 예외처리해놔서 나쁜 코드.
System.out.println("0을 입력하면 안됩니다.");
}else{ // 예외에 비즈니스코드
System.out.printf("100 / %d = %d\n", num, 100/num);
}
예외 객체. 예외와 관련된 정보 제공.
private static void m4() {
try {
int[] nums= {10, 20, 30};
nums[5]=100;
Random rnd=null;
System.out.println(rnd.nextInt());
Object o1="문자열";
System.out.println((int)o1);
}catch(Exception e) {
System.out.println("예외발생");
}
}
private static void m3() {
try {
int[] nums= {10, 20, 30};
nums[5]=100;
}catch(Exception e) {
System.out.println("방 번호 오류");
}
try {
Random rnd=null;
System.out.println(rnd.nextInt());
} catch (Exception e1) {
System.out.println("널 참조");
}
try {
Object o1="문자열";
System.out.println((int)o1);
} catch (Exception e) {
System.out.println("형변환오류");
}
}
private static void m5() {
try {
int[] nums= {10, 20, 30};
nums[2]=100; // ArrayIndexOutOfBoundsException
Random rnd=null; //null;
System.out.println(rnd.nextInt()); //NullPointerException
Object o1="문자열";
System.out.println((int)o1); //ClassCastException
Exception e=new Exception(); // 야구공
throw e;
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("방번호 오류");
}catch(NullPointerException e) {
System.out.println("널참조");
}catch(ClassCastException e) {
System.out.println("형변환 오류");
}catch(Exception e) {
System.out.println("예외발생");
}
}
String data="";
while(scan.hasNext()){
data=scan.next();
System.out.println("출력 : " + data);
}
띄어쓰기를 기준으로 한줄씩 출력된다.
Scanner scan=new Scanner(System.in);
String data=scan.nextLine();
String[] result=data.split(",");
for(String str:result) {
System.out.println(str);
}