자바 스크립트에서 파이썬의 이상에

많은 프론트 엔드 엔지니어는이 헤드 라인 묻는 생성 될 수 보았다 :

APP, 왜 파이썬을 배울 귀찮게 수 있습니다 내가 적절하게 사용 JS, 백 - 엔드 할 수 있습니까?

적어도 다음과 같은 두 가지 이유가 있습니다 :

  1. 곡선을 학습. 자바 스크립트 구문과 유사한 ES6 후 (타이프)와 파이썬은 많은 장소, 그래서 학습 곡선은 매우 부드러운 시작하기 어려운 매우 낮다.
  2. 시나리오. 웹 개발 자바 스크립트 비록 왕이지만, 여전히 일부 지역에서 몇 가지 문제가있다. 예를 들어, Node.js를 백엔드를 쓸 수 있지만,하지만 대부분 CGI 층을 위해, 인터페이스 및 통합 템플릿 렌더링, 파이썬으로, 자바가 널리 파이썬 동안 기계 학습의 측면에서, 백엔드 서비스를 작성하는 등의 언어를 사용하고있다, 또한 할 큰 장점.

이 문서에서 우리는 두 언어 사이의 "비정상"대조적으로 파이썬을 배운다.

우리는 왜 예외를 처리해야합니까

예외 코드를 작성할 때 고려해야 할 문제이지만, 그것은 거의 기사에서 언급하지 않는 화제 아니다.
특히이 하나의 웹 프론트 엔드에서 브라우저의 강력한 결함 허용 기능은 엔지니어 (숨기기) 예외의 숫자를 해결하는 데 도움이 있습니다.
하지만 당신은 경제적 손실의 결과로, 리드에있는 동안 시스템 충돌에, 함수의 동작에 영향을 미치는 이르기까지 예외를 무시합니다.

예외 처리

포착

같은 키워드 파이썬 잡히면 자바 스크립트 예외는 사용하는 try.

// JavaScript
try {
  ...
}
# Python
try:
  ...

그러나 모두 같은 제한이 있습니다 만 이상 동기화 코드 실행을 캡처하는 데 사용된다.

이상 갇혀 비동기 자바 스크립트 코드의 경우 운영 환경에 따라, 처리 상대적으로 복잡가 Node.js를 브라우저로 나눌 수 있습니다, 프레스 캡처 범위는 전체 및 부분 캡처 캡처로 나눌 수 있습니다.

// 浏览器全局异常捕获
window.onError = e => {}  
window.addEventListener('', e => {}) 捕获请求错误
// 浏览器Ajax异常捕获
var xhr = new XMLHttpRequest();
xhr.onload = function(e) { 
  if(this.status > 400){
    ...
  }
};
// Node.js 全局异常捕获
process.on('uncaughtException', e => {})
// Node.js 回调方式异常捕获
fs.readFile('/etc/passwd', (err, data) => {
  if (err) {
    ...
  }
});

파이썬도 또한 함수 내에서 캡처 할 수있는 비동기 스레드 또는 프로세스, 훨씬 더 간단 경우가 다음 다른 방법이 보도했다.

def _parse_speed(key_name, speed_list):
  try:
    ...

t = threading.Thread(target=_parse_speed, args=(v, speed_list))
t.start()

캡처 인해 비정상적인 상황은 특별한 지시하는 경우, 논의는 나중에 동기 예외를 캡처하는 키워드를 사용하려고하는 의미, 더 복잡하다.

방법

자바 스크립트는 예외를 처리하는 방법은 여러 가지 봐.

  • 잡을 수있어. 처리 예외 처리에 대한 catch 블록은 매우 광범위하다, 모든 예외는 캡처 시도 블록에 있습니다.
  • 마지막으로. 마지막 블록이 예외가 발생할지 여부를 나타내고, 부호의 설명 블록 을 실행한다.

많은 독자는 코드가 catch 블록 후 실행하고 마지막으로 같은 효과를 차단하기 위해 생각할 수 있지만, 사실은 차이가있다!

다음은 예입니다

fn = () => {
  try {
    throw Error()
  } catch(e) {
    throw Error()
    return 1
  } finally {
    return 2
  }
  return 3
}
fn() // 是2不是3

즉 마지막에 관계없이 시도하거나 캐치 실행 오류가 실행됩니다의 코드를 차단합니다.

파이썬 예외 처리 :

  • 제외. 당신은 예외 처리 로직가 복수 일 수 있고, 여러 종류의 예외 처리를 지정할 수 있고, 기록은 매우 유연하다.
  • 다른. 이상이 try 블록에서 발생했을 때 수행 할 수있다 다른 블록은 없습니다.
  • 마지막으로. 자바 스크립트와 속성.

제외하고는 사용의 몇 가지 예는 다음과 같습니다

# 捕获异常实例
except Exception as e:

# 批量异常捕获
except (IOError, TypeError):

# 异常分类捕获:
except OSError as err:
  ...
except ValueError:
  ...
except:
  ...

밖으로 던져

자바 스크립트 키워드 던져하여 Error 객체를 throw 할 수 있습니다.
그에 대응 파이썬 인스턴스에서 예외가 발생 들어 올릴 것이다.

키워드는 동일하지 않습니다,하지만 표현은 실질적으로 비슷하지만 :

// JavaScript
throw Error(...)
# Python
raise Exception(...)

예외 유형

예외 유형은 비교적 간단하므로 자바 스크립트를 들어, 작은 의미의 예외 클래스의 이야기는, 예외가 수동으로 다른 판단을 처리해야합니다.

JS-error.jpg

파이썬 예외 유형은 훨씬 더 풍부


PY-error.jpg

개요

  • 캡처 측면, 파이썬보다 자바 스크립트 복잡한 장면은, 파이썬은 간단 학습을 전송합니다.
  • 마지막 키워드 지원 둘 다 처리. 작업이 단순화되는 자바 스크립트를 제외하고, 유일한 예외는 catch 블록의 모든 유형을 처리합니다. 가장 높은 수준의 언어, 많은 시간과 일치 파이썬 관행, 다른, 다른 이상 치료를 주요 기능으로 간주되었다.
  • 슬로우 측면 모두 단지 다른 키워드.

참조 :

추천

출처blog.51cto.com/14160840/2425523