Dart Exception 예외처리 (try on vs try catch)

💜Dabo (개발자 다보)·2020년 5월 20일
5

JAVA에서 예외처리할 때 보통 쓰이는 try-catch문
dart에선 어떻게 처리할까?



try, on, catch?

try {}

블락(block)안에 에러가 발생할 수 도 있는 코드 작성

try{
    // code
}

on Exception {}

예외클래스(Exception) 타입을 지정해야 할 때 사용

try{
    // 예외 발생할 수 도 있는 코드
    // code that might throw an exception
}on 예외클래스{
    // 예외처리를 위한 코드
    // code for handling exception 
}

catch (e) {}

e(exception object) 객체가 필요할 때 사용

try{
   // 예외 발생할 수 도 있는 코드
   // code that might throw an exception
}catch(e){
   // 예외처리를 위한 코드
   // code for handling exception 
}

on Exception catch (e) {}

예외클래스(Exception) 타입을 지정 + e(exception object) 객체가 필요할 때 사용

try{
   // 예외 발생할 수 도 있는 코드
   // code that might throw an exception
}on 예외클래스 catch(e){
   // 예외처리를 위한 코드
   // code for handling exception 
}


try-on vs try-catch?

try-on

main() { 
   int x = 12; 
   int y = 0; 
   int res;  
   
   try {
      res = x ~/ y; 
   } 
   on IntegerDivisionByZeroException { 
      print('Cannot divide by zero'); 
   } 
} 

console

Cannot divide by zero

try-catch

main() { 
   int x = 12; 
   int y = 0; 
   int res;  
   
   try {  
      res = x ~/ y; 
   }  
   catch(e) { 
      print(e); 
   } 
} 

console

IntegerDivisionByZeroException

try-catch

main() { 
   int x = 12; 
   int y = 0; 
   int res;  
   
   try {  
      res = x ~/ y; 
   }  
   on IntegerDivisionByZeroException catch(e) { 
      print(e); 
   } 
} 

console

IntegerDivisionByZeroException


정리

JAVA에선 dart에서말하는 on개념이 당연히 들어가있어서,
try-catch 문을 보는데 on이 왜필요한가?에 대해서 한글로 쓰신 블로그들을 봤는데
아무리 읽어도 당이 떨어졌는지 이해가 안되서 애를 먹었다ㅠㅠ

근데 tutorialspoint에 소스코드 보고 이해함...(진작에볼껄)

✅ 심플하게 JAVA에서 쓰던 try-catch문은 try-on-catch문을 쓰면되는것🤔


정리 하자면, dart에선
on은 exception 객체가 필요없을 때 안써도 되는 아이
catch는 exception 객체가 필요할 때 쓰는 아이
근데 특정 exception만 지정해서 예외처리를 하고싶다면? on-catch구문





cf.
https://www.tutorialspoint.com/dart_programming/dart_programming_exceptions.htm

profile
𝙸 𝚊𝚖 𝚊 𝚌𝚞𝚛𝚒𝚘𝚞𝚜 𝚍𝚎𝚟𝚎𝚕𝚘𝚙𝚎𝚛 𝚠𝚑𝚘 𝚎𝚗𝚓𝚘𝚢𝚜 𝚍𝚎𝚏𝚒𝚗𝚒𝚗𝚐 𝚊 𝚙𝚛𝚘𝚋𝚕𝚎𝚖. 🇰🇷👩🏻‍💻

1개의 댓글

comment-user-thumbnail
2020년 10월 19일

try catch 이후에 또 catch가 있으면 어떻게 하나요??

답글 달기