Python_Scrapy_6. 오류와 예외

2654 단어 Scrapy
공식 강좌의 두 번째 부분을 보았는데 이상 처리 메커니즘을 사용한 것을 발견하였다.나의 학습 계획은 프로젝트를 둘러싸고 진행되었기 때문에 스킬이 부족하면 몬스터를 처치하고 레벨을 승급합니다.
0. 프로그래밍 시 발생하는 오류와 이상
a. 코드 자체의 오류, 즉 버그.예를 들어 문자열에 인용부호를 적게 쳐서 문법 오류가 발생했다.
b. 코드 사용자의 잘못된 코드 사용으로 인한 문제.예를 들어 정수를 가져와야 하는데 문자열을 가져와야 한다
c. 코드를 사용하는 것은 운행 환경의 차이로 인한 문제이다.예를 들어 하드디스크에 데이터를 쓸 때 하드디스크가 가득 차거나 고장났다.
1.try...except...finally
a. 기본적인 사용 방법
try...except...finaly와if,else는 흐름을 제어하는 문장입니다.먼저try의 코드를 실행합니다. 만약 한 줄의 코드에 이상이 발생하면 except의 코드 블록으로 넘어가며, 프로그램이 틀리든지 않든finally의 코드를 실행합니다.
# coding:gbk
try:
    #      
    f = open(r'C:\Fallout4.txt')
    print('1')
    print('2')
    print('3')
    print(f.read())
except:
    print('  ,     .')
finally:
    print('    ')

반환된 결과:
  ,     .
    
# coding:gbk

try:
    #      
    f = open(r'C:\test\Fallout4.txt')
    print('1')
    print('2')
    print('3')
    print(f.read())
except:
    print('  ,     .')

finally:
    print('    ')

반환된 결과
1
2
3
shut up and take my money.
    

except는 포획해야 할 오류와 오류의 원인 두 가지 인자를 추가할 수 있습니다.만약 두 개의 except 문장이 있다면try의 문장이 빠르고 동시에 이 두 가지 오류가 발생하면Python은 첫 번째 이상만 포착할 수 있습니다.
# coding:gbk

try:
    #      
    a
    f = open(r'C:\Fallout4.txt')
    print('1')
    print('2')
    print('3')
    print(f.read())

except NameError, e:
    print('  {0}'.format(e))

except IOError, e:
    print('  {0}'.format(e))



finally:
    print('    '

2.raise
파이톤은 모든 것이 정상이라고 생각하는데, 프로그램이 틀리면 어떻게 해야 합니까?레이스로 스스로 이상을 일으킨다.
# coding:gbk

class FooError(StandardError):
    pass

def foo(s):
    n = int(s)
    if n == 1:
        raise FooError('invaild value:{0}'.format(s))
    return 10/n

foo(1)


결실
Traceback (most recent call last):
  File "C:/Users/bin/PycharmProjects/untitled1/test_raise.py", line 12, in 
    foo(1)
  File "C:/Users/bin/PycharmProjects/untitled1/test_raise.py", line 9, in foo
    raise FooError('invaild value:{0}'.format(s))
__main__.FooError: invaild value:1

3.with...as 
with...as 문장은try...except...finally의 간략화 버전, with 이후 특수한 대상 as의 변수에 따라 그 특수한 변수에 값을 부여합니다.
with open(r'c:\test\Fallout4.txt') as anything :
    print (anything.read())

구체적으로 다음 두 링크를 볼 수 있습니다.
with as 사용 상세 설명

좋은 웹페이지 즐겨찾기