2012-11-20 5 views
1

image.onload에서 호출되는 함수에서 예외를 catch하는 방법을 알아낼 수 없습니다. 다음 예제주의 :이미지 온로드에서 예외를 catch하는 방법

function afterImgLoads() { 
    throw 'This is being thrown from img.onload!'; 
} 

try { 
    var img = new Image(); 
    img.onload = afterImgLoads; 
    img.src = 'path/to/valid/image.jpg'; 
} catch(e) { 
    throw 'This is being thrown after setting img.src'; 
} 

위의 예에서를, 나는 afterImgLoads() 자체에서 오류가 발생하면 두 번째 throw 문이 슬로우 얻는 방법을 알아낼 수 없습니다.

답변

0

onload가 비동기 적으로 발생하기 때문에 catch가 throw 문을 사용할 수 없습니다.

0

페이지의 아무 곳에서나 catch되지 않는 예외에서 호출 될 window.onerror를 설정할 수 있습니다.

4

당신은 어쩌면 수 그것은 이미지를

+0

감사를로드하는 오류의 경우에 그 함수를 호출합니다 onerror

img.onerror = onErrorFunction; 

를 사용합니다. 불행히도, 나는 이미지를로드하지 못한 것에 대해 걱정하지 않는다. img가 성공적으로로드 된 후 다른 코드를 실행하려고 시도하고 있으며 그 프로세스가 잘못되면 사용자 정의 예외가 발생합니다. – fronzee

+0

그런 다음 'afterImageLoads' 함수에서 예외를 원하는 코드를 실행하십시오. function afterImageLoads() {try {} catch (e) {}}' 찾고 계신 것이 맞습니까? – powerc9000

+0

실제로 나는 이미 그것을하고 있지만 나의 예가 간소화되어 있습니다. 궁극적으로, 나는 afterImageLoads()에서 catch하지 않고 throw해야하고, 다른 곳에서는 예외를 catch해야합니다. 다행스럽게도 원래 달성하려는 목표와는 다른 전반적인 접근 방식을 찾았으므로 지금은이 접근 방식을 포기했습니다. – fronzee

관련 문제