1. 구문적 오류(Syntax Error)
- 문법 오류에 의해 기계어 변환 과정에서 발생하는 오류
2. 실행오류(Runtime Error)
- 프로그램 실행 중 발생하여 프로그램이 비정상적으로 종료되는 오류
text를 정수로 바꾸는 것으로 적었는데 text인자가 실수여서 에러가 나는 상황이다.
n2가 만약 0일때 나눌 수가 없어서 에러가 나는 상황이다.
3.의미적 오류(Semantic Error)
- 문법은 정상이지만 실행 결과가 원하는 대로 나오지 않는 오류
-첫번째는 인자가 똑같은 2이지만 잘보면 a는 정수 b는 튜플이여서 맞지가 않은걸 알 수 있다.
-두번째는 함수의 출력과 반환에 관한 예제이다. 함수 안에서 반환하는거랑 출력하는건 다른 값이 나온다
반환하면 값을 반환이 되고 출력하면 None값이 나온다 .
-마지막은 16 * 0.1은 0.6인가 보는건데 암산을 하면 0.6이 맞는것이다 .그러나 결과를 보면 반올림때문에
틀린것을 알수가 있다.
4. 예외처리
- 프로그램 개발하면서 예상치 못한 상황 발생시 처리한다
- 입출력 오류와 같은 상황 발생시 프로그램 종료를 방자히기 위함이다.
- 개발자가 예외 발생 가능 부분을 어떻게 대응하라고 지정해 줄 수 있다.
try:
code context
except:
code context
코드는 위 사진과 같은 구조로 쓰면 된다 .
예시를 보자
0~10을 출력을 하고 출력은 나누기로 해줘서 값을 출력해주는 문이다.
그러나 0도 포함이 되있어서 바로 에러가 난 상황.
에러가 나도 진행시키고 싶은 상황이라면 다음과 같이 코드를 작성하면 된다.
try에 원하는 결과값을 출력해주는 코드를 작성하고
except에 만약 에러가 났다면 출력을 해주는 문구를 쓰거나 바꿀 코드를 작성한다.
그럼 에러문구와 함께 다른 값도 출력을 할수 있다.
- 에러 메세지를 직접 적을 수있다.
위에랑 똑같은 코드이다 .
다른점은 except에 내가 남기고싶은 글로 바꿨다.
또한 만약에 메세지가 길 경우 간결하게 해주기 위해
as를 쓰고 간단한 단어로 바꿔서 쓸수 있다.
- else문
- 해당 예외가 발생하지도 않을 경우 수행할 코드
- finally문
- 예외 발생여부와 상관없이 무조건 수행할 코드
위 사진을 보면 3개의 값을 받는데 "처리완료" 라는 문구가 3개가 출력이 되었다.
오류가 나던지 안나던지 무조건 출력해주는 역활을 한다.
<정리>
try - 예외 발생이 될만한 코드작성
except - 예외발생시(오류) 실행되는 코드 작성
else - 예외가 발생안하면 실행되는 코드 작성(오류X,내가 원하는 값)
finally - 예외 발생여부와 상관없이 항상 실행되는 코드작성
5.여러가지 오류
1. name erroer
- 정의되지 않은 변수를 사용하려 할때
2. value error
- 변환할 수 없는 자료형을 변환 시도 할때
3.type error
- 자료형이 맞지 않는 연산을 시도할때
- 호출할수 없는 객체를 함수처럼 호출할때
4. filenotfound error
- 없는 파일을 읽으려고 할때
5.attributeerror
-객체에 없는 속성을 사용하려 할때
6. raise 문
- 필요할때 에러를 발생 시키는 코드
- if문과 함께 많이 사용한다.
- 메세지도 넣을 수있다.
7. assert문
- 조건이 거짓일 경우 오류를 발생 시킴
작성한 코드가 거짓일 경우 실행이 된다.
위 사진을 보면 조건식이 num2가 0보다 크면 이라고 적혀있다.
여기서 num2가 음수일때 옆에 있는 문자열이 출력이 되는 코드이다
위 사진을 보면 num2을 음수로 입력을 했을 때 assert문은 거짓이므로 옆에 있는 문구를 출력이 됬다.
'파이썬' 카테고리의 다른 글
19. 정규표현식(정규식) (0) | 2022.08.09 |
---|---|
18. 제너레이터 (0) | 2022.08.09 |
16. 실습 예제 (0) | 2022.08.05 |
15.클래스 (0) | 2022.08.03 |
14. 함수 (2) (0) | 2022.08.01 |