문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

오류 처리

Silverlight

Silverlight의 관리되는 API에는 응용 프로그램 코드를 처리하는 런타임이 래핑된 오류 처리 및 예외 처리 관리 계층이 있습니다. 응용 프로그램의 사용자 코드에서 발생하는 예외를 처리하기 위해 UnhandledException에 대한 처리기를 등록할 수 있습니다. 플랫폼 코드 예외와 UnhandledException을 사용하여 처리하지 않도록 선택하는 예외는 Silverlight 플러그 인의 네이티브/관리되지 않는 오류 메커니즘에 전달됩니다. 이 수준에서 플러그 인 인스턴스화 중에 지정된 OnError 처리기를 사용하여 오류를 처리할 수 있습니다. 일부 오류와 예외의 경우 Silverlight의 추가 코딩이나 스크립팅을 수행할 수 없게 되지만 다른 오류와 예외는 심각하지 않은 것으로 간주되므로 응용 프로그램의 코딩 또는 스크립팅을 계속할 수 있습니다. 이 항목에서는 Silverlight의 일반 오류 및 예외 처리와 관련된 API 및 기술과 오류 처리 개념에 대해 설명합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

아키텍처 관점에서 볼 때 Silverlight는 응용 프로그램 코드를 실행하는 런타임입니다. 대부분의 Silverlight 런타임은 네이티브 코드로 내부적으로 구현됩니다. 이 아키텍처가 필요한 세 가지 주요 이유는 다음과 같습니다.

  • Silverlight 런타임은 브라우저 호스트 스크립팅 모델(Silverlight 1.0 연대 응용 프로그램에 사용 가능한 원본 모델)을 함께 지원하는 코어를 기반으로 합니다.

  • 특히 Macintosh용 Silverlight의 경우 런타임이 네이티브 코드에서 기본 CLR 엔진/런타임을 자체적으로 구현해야 합니다.

  • Silverlight에서는 XAML 구문 분석이 네이티브 코드 구현을 통해 부분적으로 수행됩니다.

Silverlight의 관리되는 API는 종종 Silverlight 핵심 네이티브 함수에 사용되는 씬 래퍼이거나 Silverlight의 초기 CLR 런타임 및 라이브러리를 기반으로 하는 관리되는 코드입니다.

Silverlight의 관리되는 API로 인해 예외가 발생할 수 있습니다. 주어진 API에서 특정 클래스에 대한 기본 예외로 발생하는 예외에 대해서는 Silverlight용 .NET Framework 클래스 라이브러리 참조 항목에서 설명합니다. 래퍼인 경우 관리되는 API 동작이 네이티브 수준에서 오류를 발생시킬 수도 있습니다. 때때로 네이티브 오류는 래퍼의 UnhandledException으로 표현됩니다. 그러나, 예외 발생 없이 오류가 발생하는 것도 가능하고 경우에 따라서는 Silverlight 런타임이 종료됩니다.

자세한 내용은 Silverlight 아키텍처을 참조하십시오.

일반적으로 관리 코드는 오류가 아닌 예외를 처리합니다. 그러나 Silverlight에서는 앞에 나오는 "예외, 오류 및 Silverlight 아키텍처"에서 설명했듯이 네이티브 코어를 사용하며, 이 항목의 나머지 부분에서는 네이티브 코드에서 보고한 오류 상태를 지칭할 경우에 "오류"라는 단어를 사용합니다. 또한 Silverlight 런타임에서는 플랫폼에서 발생하는 예외와 응용 프로그램 코드 실행으로 인해 발생하는 예외를 구분합니다.

관리되는 프로그래밍이 처음이고 예외가 어떻게 처리되는지에 대한 자세한 정보가 필요한 경우 예외 처리 및 Throw을 참조하십시오.

예외에는 종종 예외의 Message 속성 값의 일부로 정보가 포함됩니다. 이 정보는 응용 프로그램을 개발하는 동안에만 사용하기 위한 것입니다. Message 로 보고되는 정확한 문자열은 다를 수 있으며 실제 배포된 응용 프로그램 동작에 따라 달라져서는 안 됩니다. 특히, Silverlight 라이브러리의 디버그 버전은 일반적으로 같은 Silverlight 응용 프로그램을 실행하는 표준 최종 사용자 런타임에 표시되지 않을 것 이라고 메시지에 추가 정보가 포함됩니다. 예외 메시지의 고정된 부분은 종종 라이브러리에 리소스로 포함되고 런타임 예외가 throw될 때 참조됩니다. 예외 메시지의 다른 부분은 예외 클래스의 특정 속성 값을 포함하여 컨텍스트에 의해 전달될 수 있습니다.

플랫폼 예외 및 응용 프로그램 예외

Silverlight 오류/예외 시스템은 응용 프로그램 코드 실행으로 인해 발생하는 예외와 플랫폼 예외(Silverlight에서 자체 .NET 라이브러리와 코어 런타임을 위해 구현하는 API와 관련된 예외)를 구분합니다. 플랫폼 예외는 잘 발생하지 않지만 발생할 경우 Silverlight 코어가 중단되며 복구할 수 없습니다.

응용 프로그램 코드에서 관리되는 예외를 처리할 때에는 응용 프로그램 호출에서 발생하는 모든 예외의 중앙 처리 지점으로 Application을 사용합니다. 전체 응용 프로그램에 대해 단일 UnhandledException 처리기를 작성합니다.

UnhandledException 처리기 내에서 대부분의 흥미로운 정보는 대개 ExceptionObject입니다. 이 속성은 발생한 특정 예외를 보고하고 디버거가 연결된 경우 디버거에 보고되는 예외와 유사합니다. 예외 개체에서 GetType()을 호출하고 형식을 사용하여 발생한 예외에 따라 다른 코드 경로로 전환할 수 있습니다. 이 방법은 응용 프로그램이 이 항목의 다음 섹션에서 설명하는 대로 프러덕션 런타임 시나리오에서 복구할 수 있는 예외를 격리하는 데 유용합니다.

예외 처리를 여러 개의 작은 모듈로 나누고 특정 호출에서 특정 예외를 catch하는 기술로 특정 try/catch 블록을 작성할 수 있습니다. 특정 try/catch 기술은 예외를 수정하는 데 보다 나은 컨텍스트를 사용할 수 있기 때문에 특정 예외 처리 시나리오에 적합한 경우가 많습니다. 응용 프로그램 코드에 예외를 catch하는 특정 try/catch가 있는 경우에는 Application.UnhandledException이 호출되지 않습니다. 그러나 응용 프로그램 코드 try/catch가 특정 예외를 catch하지 않는 경우에는 Application.UnhandledException이 호출됩니다.

개발 프로세스 중에 발생하는 예외

응용 프로그램을 개발하는 기간 동안 Visual Studio에서 개발을 시작하면 Silverlight 예외가 발생할 수 있습니다. 예외가 복구 불가능하여 Silverlight 핵심 프로세스를 중단하거나 응용 프로그램 도메인을 언로드해야 하는 경우에도 예외가 발생할 수 있습니다.

XAML 구문 분석 과정에서 발생하는 예외는 일반적으로 응용 프로그램의 기능상 복구가 불가능하며 이 경우 실행을 중단하고 발생한 XamlParseException을 처리할 수 있습니다. 이벤트 데이터의 줄 정보를 확인하여 구문 분석하지 못한 특정 태그 요소 또는 특성을 찾을 수 있습니다. Silverlight에 대한 XAML 구문 분석에서는 처음 발생한 구문 분석 문제만 보고되므로, 초기 오류를 수정하여 동일한 XAML 파일에서 사전순으로 다른 오류를 발생하는 다음 구문 분석 시도를 확인할 수 있습니다.

object 태그나 다른 기술을 사용하여 Silverlight를 초기화할 경우 예외가 발생했을 때 실행을 중단하고 Visual Studio를 시작하는 첫 번째 기회를 사용하지 못할 수도 있습니다. 이러한 유형의 오류는 호스트(일반적으로 브라우저 호스트) 도메인에서 발생하며 처음 예외가 발생할 때 Visual Studio에서 액세스하여 사용할 수 있는 서비스에 노출되지 않을 수도 있습니다.

Silverlight의 기본 Visual Studio 프로젝트 템플릿은 기본 UnhandledExceptionEventHandler 구현을 app.xaml.cs 또는 app.xaml.vb 파일에 생성합니다. UnhandledException 처리기는 응용 프로그램을 중지하지 않고 관리되는 예외를 브라우저 호스트 화면에 표시하므로 개발 단계에서 유용합니다. 이 작업은 예외를 처리된 상태로 표시하고 브라우저 DOM을 사용하여 예외를 메시지 상자로 표시함으로써 수행됩니다. 따라서 Visual Studio를 사용하여 디버깅할 수 없는 플랫폼 및 호스트에 대한 예외 정보를 표시할 수 있습니다. 이 처리기로 응용 프로그램을 배포해서는 안 됩니다. 배포 준비 UnhandledException 처리기는 필요에 따라 예외를 기록하고 복구 가능한 예외만 처리해야 합니다. 자세한 내용은 다음 단원을 참조하십시오.

디자인 타임에 레이아웃 예외

Silverlight에서 특정 레이아웃 예외는 디자인 도구에서 특별한 디자인 타임 처리 기능이 있으므로 이 도구는 디자인 화면 내에서 Silverlight 런타임을 종료하지 않고 문제를 해결하는 방법에 대한 적절한 지침을 제공할 수 있습니다. 이러한 레이아웃 문제의 예는 무한 desiredSize를 반환하는 Measure 패스, 레이아웃 주기 또는 잘못된 시각적 트리를 발생시키는 디자이너에 의한 템플릿 확장을 포함합니다. 디자인 및 개발 단계에서 이러한 문제를 반드시 해결해야 합니다. 이와 동일한 문제가 프로덕션 코드에서 발생하고 디자인 모드에 있지 않은 동안 종종 예외를 복구할 수 없습니다.

복구할 수 있는 예외 및 복구할 수 없는 예외

응용 프로그램에서 발생한 예외를 복구할 수 있는지 여부는 UnhandledException 처리기를 작성한 방법에 따라 결정됩니다. 특정 예외가 복구 가능하고 해당 예외를 더 이상 처리할 필요가 없는 경우 처리기에서 이벤트 데이터의 Handledtrue로 설정해야 합니다. 예외를 복구하면 다른 코드 경로가 입력되거나 다른 UI가 표시되거나 응용 프로그램 특정 상태가 격리된 저장소에 저장되므로 상태를 이후의 응용 프로그램 다시 시작 또는 응용 프로그램 시나리오에 특정한 다른 가능성에 사용할 수 있습니다.

이벤트 데이터의 Handledtrue로 설정하지 않으면 예외가 관리되지 않는 오류 처리 수준으로 이동할 수 있습니다. 이 예외는 브라우저 스크립트 호스트에서 실행되는 스크립트로 작성한 onError 처리기에서 처리될 수 있습니다. 예외가 이 지점에 도달하면 응용 프로그램의 AppDomain이 종료되고 관리되는 응용 프로그램 코드가 더 이상 실행되지 않습니다.

참고 참고:

실제로 오류를 onError 스크립트 처리로 이동하는 것이 좋은 경우(예: 특정 상호 운용 또는 배포 시나리오)도 있습니다. 대부분의 경우에는 모든 복구할 수 있는 오류를 UnhandledException 처리기에서 처리된 상태로 표시해야 합니다.

자세한 내용은 UnhandledException응용 프로그램 서비스의 "처리되지 않은 예외 처리"를 참조하십시오.

서비스 예외

개발 단계 동안 Silverlight 서비스를 디버깅하려면 테스트 클라이언트 간에 전송 수준 정보를 확인하고 생산 도메인보다는 테스트 도메인을 사용하도록 서비스와 서비스 요청을 다시 구성하는 등의 기술이 종종 필요합니다. 종종 서버 예외를 사용하도록 설정하는 것이 유용합니다. 자세한 내용은 Debugging Services for Silverlight Applications를 참조하십시오.

Silverlight 응용 프로그램을 배포하고 나면 서비스에 액세스 하려고 하는 모든 응용 프로그램은 서비스를 사용할 수 없거나 유효한 응답을 제공할 수 있는 경우 정상적으로 동작해야 합니다. 서버에 있는 클라이언트 액세스 정책이 서비스에 액세스하는 것을 거부하는 경우에도 클라이언트는 정상적으로 처리해야 합니다.

Silverlight 4 이상을 대상으로 하는 경우 WCF SOAP 결함 프로그래밍 모델을 사용하여 생산 목적으로 클라이언트에 선언된 결함 또는 디버깅 목적으로 선언되지 않은 결함을 처리할 수 있습니다. WCF SOAP 결함 프로그래밍 모델을 사용하려면 200-시리즈 상태 코드를 사용하여 결함을 제공하도록 서비스를 구성하거나 서비스 통신을 위해 대체 클라이언트 HTTP 스택을 등록해야 합니다. 자세한 내용은 Creating and Handling Faults in Silverlight를 참조하십시오.

데이터 유효성 검사 오류 및 예외

경우에 따라 런타임 데이터 유효성 검사를 사용하는 속성도 디버깅 환경에서 응용 프로그램을 실행 하는 경우 유효성 검사 코드를 실행 하기 전에 예외가 발생합니다. Visual Studio에서 디버그 메뉴를 사용하고 예외를 선택하고 일부 또는 모든 CLR 예외 동작을 변경하여 예외 처리 동작을 변경할 수 있습니다. 예외와 관련하여 데이터 유효성을 검사하는 방법에 대한 자세한 내용은 데이터 바인딩을 참조하십시오.

배경 스레드

Silverlight에서 실행되는 배경 스레드에서 발생하는 예외는 UnhandledException으로 승격되지 않습니다.

XAML 구문 분석 오류

일반적으로 XAML 파서 오류는 배포된 응용 프로그램에서 UnhandledException 처리를 통해 처리할 수 있는 오류 영역에 포함되지 않습니다. 그러한 XAML 파서 오류는 응용 프로그램 개발 단계에서 감지되었어야 합니다. 자세한 내용은 Silverlight XAML 디버깅을 참조하십시오.

하지만 XamlReader.Load를 사용하여 런타임에 XAML을 읽고 XAML로 로드할 문자열 소스가 문자열 구문 분석, XML 조각, 격리된 저장소, 데이터베이스 레코드 또는 기타 소스로 구성되어 전체 XAML 소스로 완벽하게 테스트하기 어려운 경우에는 런타임에 파서 오류가 발생할 수 있습니다. 또 다른 가능한 원인이 어셈블리가 지원하는 참조 형식이 어셈블리의 Silverlight 핵심 집합에서 온 것이 아니고 해당 어셈블리를 Silverlight 배포의 일부로 해당 어셈블리를 패키징하지 않은 경우입니다. 따라서 어셈블리는 클라이언트 관점에서 런타임 시 누락되며 XAML 파서 오류는 누락 어셈블리 문제가 어떻게 나타나는지가 될 수 있습니다.

참고 참고:

사용자나 다른 엔터티에게 XamlReader.Load 입력으로 사용되는 임의의 문자열을 제공하도록 허용해서는 안 됩니다. 그러면 오류를 방지할 수 없을 뿐만 아니라 임의의 확인되지 않은 XAML을 로드하여 응용 프로그램 보안에 큰 영향을 줄 수 있습니다. XamlReader.Load 사용 의 "XAML에서 개체를 만드는 경우의 보안 문제" 단원을 참조하십시오.

비동기 메서드 이벤트

UnhandledException 기술은 실패한 다운로드 요청과 같은 비동기 작업에서 발생하는 예외를 캡처하지 않습니다. 이러한 예외는 일반적으로 원래의 비동기 작업을 호출하는 개체에 대한 전용 처리기에서 처리됩니다. 전용 처리기가 연결되어 있지 않은 경우에도 UnhandledException 처리기는 호출되지 않습니다.

예를 들어 이미지 소스에 URI를 채우고 해당 URI/이미지에 대한 로드 실패 가능성을 예측하는 것이 응용 프로그램의 설계 의도에 포함되는 경우에는 일반적으로 해당 Image 개체에 연결되는 ImageFailed에 대한 처리기를 제공합니다. 처리기가 없고 이미지가 로드되지 않는 경우 해당 이미지에 대한 런타임 UI 레이아웃이 비어 있습니다. 높이 또는 너비를 지정하지 않은 경우에 0x0 크기가 될 수도 있습니다. 그렇지 않으면 응용 프로그램이 작동할 수 있고 응용 프로그램에 대해 UnhandledException 이벤트가 발생하지 않습니다.

오류의 유형에 따라 JavaScript 수준의 Silverlight 기반 스크립팅 응용 프로그램에서 오류 처리 지원 기능을 다양한 방식으로 제공할 수 있습니다. Silverlight 플러그 인의 OnError 처리기를 사용하여 파서 오류, 런타임 오류 및 다른 유형의 오류를 처리할 수 있습니다. try/catch 블록을 동기 메서드 호출 주위에 배치할 수 있으며 이 호출로 인한 오류를 catch 블록에서 처리할 수 있습니다. 이벤트 처리기가 MediaFailed와 같은 비동기 오류 이벤트에 연결될 수 있습니다. Visual Studio에서 스크립트 디버깅을 설정하여 사용하는 경우 통합된 JavaScript 디버깅 지원 기능을 사용하여 중단점을 설정하고 값을 검사할 수 있습니다.

참고 참고:

특정 오류 메시지는 Silverlight 설명서에서 다루지 않습니다. 자세한 내용은 Silverlight Plug-in Error Messages를 참조하십시오.

OnError 이벤트 처리기 정의

Silverlight 플러그 인 개체 요소의 OnError 매개 변수를 사용자 지정 이벤트 처리기 함수로 설정하여 Silverlight 기반 응용 프로그램의 오류 처리기를 정의할 수 있습니다.

onError 처리기는 sender 개체와 이벤트 데이터라는 두 매개 변수를 사용합니다. sender는 오류가 발생한 개체이며 항상 플러그 인 인스턴스이고 개체 트리의 특정 개체를 보고하지 않습니다. 두 번째 매개 변수는 ErrorEventArgs 개체의 인스턴스이거나 파생된 해당 개체, ParserErrorEventArgs 또는 RuntimeErrorEventArgs 중 하나입니다. JavaScript는 프로토타입 기반이기 때문에 먼저 이러한 모든 오류에 대해 사용할 수 있는 errorType을 결정한 다음 해당 errorType과 일치하는 eventargs를 기반으로 특정 유형의 오류 이벤트 데이터 속성을 쿼리할 수 있습니다.

다음 표에는 ErrorEventArgs 개체에 대한 속성이 나와 있습니다. 이러한 속성은 onError에서 처리되는 모든 오류 이벤트에 공통적입니다.

속성

설명

errorMessage

오류 이벤트와 연결된 메시지입니다.

errorType

ErrorType 열거형 값으로 정의된 오류 유형입니다.

errorCode

오류 이벤트와 연결된 숫자 코드입니다.

다음 표에는 ParserErrorEventArgs 개체에 정의된 파서 오류 관련 속성이 나와 있습니다.

속성

설명

charPosition

오류가 발생한 문자 위치입니다.

lineNumber

오류가 발생한 행입니다.

xamlFile

오류가 발생한 XAML 파일입니다.

xmlAttribute

사용하지 마십시오.

xmlElement

사용하지 마십시오.

다음 표에는 RuntimeErrorEventArgs 개체에 정의된 런타임 오류 관련 속성이 나와 있습니다.

속성

설명

charPosition

오류가 발생한 문자 위치입니다.

lineNumber

오류가 발생한 행입니다.

methodName

오류와 연결된 메서드입니다.

다음 예제에서는 브라우저 호스트에서 Silverlight 기반 응용 프로그램에 대한 object 태그 선언 과정에서 OnError 이벤트 처리기를 OnErrorEventHandler라는 사용자 정의 함수로 설정하는 방법을 보여 줍니다.

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" ...>
  <param name="source" value="silverlightapplication1.xap"/>
  <param name="onerror" value="OnErrorEventHandler"/>
...
</object>

다음 JavaScript 예제에서는 Silverlight 플러그 인의 OnError 이벤트에 연결된 이벤트 처리기 함수를 보여 줍니다. ErrorEventArgs ErrorType 속성은 특정 오류 유형을 확인하기 위해 검사됩니다. 오류가 런타임 또는 파서 오류이면 추가 오류 정보가 표시 메시지에 추가됩니다.

function OnErrorEventHandler(sender, errorArgs)
{
    // The error message to display.
    var errorMsg = "Silverlight Error: \n\n";
    
    // Error information common to all errors.
    errorMsg += "Error Type:    " + errorArgs.errorType + "\n";
    errorMsg += "Error Message: " + errorArgs.errorMessage + "\n";
    errorMsg += "Error Code:    " + errorArgs.errorCode + "\n";
    
    // Determine the type of error and add specific error information.
    switch(errorArgs.errorType)
    {
        case "RuntimeError":
            // Display properties specific to RuntimeErrorEventArgs.
            if (errorArgs.lineNumber != 0)
            {
                errorMsg += "Line: " + errorArgs.lineNumber + "\n";
                errorMsg += "Position: " +  errorArgs.charPosition + "\n";
            }
            errorMsg += "MethodName: " + errorArgs.methodName + "\n";
            break;
        case "ParserError":
            // Display properties specific to ParserErrorEventArgs.
            errorMsg += "Xaml File:      " + errorArgs.xamlFile      + "\n";
            errorMsg += "Xml Element:    " + errorArgs.xmlElement    + "\n";
            errorMsg += "Xml Attribute:  " + errorArgs.xmlAttribute  + "\n";
            errorMsg += "Line:           " + errorArgs.lineNumber    + "\n";
            errorMsg += "Position:       " + errorArgs.charPosition  + "\n";
            break;
        default:
            break;
    }
    // Display the error message.
    alert(errorMsg);
}

Silverlight.js OnError 이벤트 처리기 사용

Silverlight.js 는 필요한 개체 태그 지정을 구성하여 HTML에서 Silverlight 플러그인을 인스턴스화할 수 있는 스크립트 함수의 유틸리티 라이브러리입니다. 인스턴스화를 위한 Silverlight.js 기술은 OnError 처리기 매개 변수에 대한 기본 이벤트 처리기를 제공합니다. Silverlight.js 함수를 사용하여 CreateObject 호출에서 onError 매개 변수를 지정되지 않은 상태나 null로 두는 경우 네이티브 스크립트 오류가 발생하면 Silverlight.js에 정의된 기본 처리기 함수가 호출됩니다. Silverlight.js 파일을 포함하고 해당 함수를 호출하는 방법은 방법: JavaScript를 사용하여 웹 페이지에 Silverlight 추가를 참조하십시오.

중요 중요:

Silverlight.js 에 정의된 기본 OnError 이벤트 처리기 함수는 많은 오류에 대한 대화 상자를 표시합니다. 이 동작을 사용하여 프로덕션 코드나 웹 사이트를 배포하려고 하지는 않을 것입니다. OnError 가 사용되며 Silverlight 기반 응용 프로그램의 실시간 실제 배포에서 완전히 제거될 수 없는 많은 비동기 오류에 대해 호출됩니다.

동기 메서드 호출 및 JavaScript의 try/catch 블록

동기 메서드 호출은 호출이 반환될 때까지 호출하는 함수를 차단합니다. try/catch 문을 사용하여 오류에 대한 JavaScript 코드 블록을 테스트할 수 있습니다. try 블록에는 실행할 코드가 포함되어 있고 catch 블록에는 오류가 발생하는 경우 실행할 코드가 포함되어 있습니다.

비동기 메서드 호출이 실패하고 메서드 호출이 try/catch 블록에 있는 경우 "ECMAScript 언어 사양"(ECMA-262)에서 설명하는 오류 개체가 catch 블록에 전달되고 onError 이벤트가 발생하지 않습니다. onError 이벤트가 발생하지 않기 때문에 onError 이벤트 처리기가 호출되지 않습니다. 동기 메서드 호출이 실패하고 메서드 호출이 try/catch 블록에 있지 않은 경우 onError 이벤트가 발생하고 Silverlight 플러그 인의 onError 처리기에 라우트됩니다. onError 처리기에 전송된 이벤트 인수의 ErrorTypeRuntimeError로 설정됩니다.

오류 개체를 통해 catch 블록에 반환되는 유일한 Silverlight 관련 오류 정보는 ErrorMessageErrorCode(Internet Explorer에서만 해당)입니다. 오류 개체의 message 속성은 오류 메시지로 설정됩니다.

try/catch 기능은 Apple Safari 및 Macintosh를 제외하고 Silverlight에서 지원하는 모든 브라우저와 운영 체제에서 현재 지원됩니다. 이러한 제한 때문에 모든 동기 런타임 메서드에 onError를 사용하는 것이 좋습니다.

JavaScript 형식의 Silverlight 비동기 오류 이벤트

비동기 호출은 호출된 직후 제어를 반환합니다. 비동기 호출 중에 오류가 발생하면 호출 유형과 관련된 오류 이벤트가 발생합니다. 처리기가 특정 비동기 이벤트에 연결되어 있지 않으면 onError 처리기가 호출됩니다. 비동기 오류 이벤트의 예는 MediaFailed 이벤트입니다.

다음 예제에서는 MediaFailed 이벤트에 이벤트 처리기를 연결하는 방법을 보여 줍니다.

  <MediaElement x:Name="MediaPlayer" MediaFailed="MediaFailedHandler" />

다음 예제에서는 MediaFailed 이벤트에 대한 이벤트 처리기를 보여 줍니다.

function MediaFailedHandler(sender, args)
{

    // Create basic error message.
    var errorMsg = "\n Media Error Message     \n" ;

    // Add Media information.
    errorMsg += "MediaElement Name: " + sender.Name + "\n";
    errorMsg += "Media File Name: " + sender.Source + "\n";

    // Display error information.
    alert(errorMsg);  
}

Visual Studio에서 JavaScript 디버깅 사용

Visual Studio에서 Silverlight 기반 응용 프로그램을 만들 때 Visual Studio를 사용하여 JavaScript 코드를 디버깅할 수 있습니다. 중단점을 설정하고 변수 값을 보고 수정할 수 있으며 Immediate 창에서 스크립트를 실행할 수 있습니다. Visual Studio에서 JavaScript 디버깅을 사용하려면 Internet Explorer에서 "스크립트 디버깅 사용 안 함" 설정의 선택을 취소해야 할 수 있습니다. 기본적으로 이러한 설정의 확인란은 선택되어 있습니다. "스크립트 디버깅 사용 안 함" 설정의 선택을 취소한 후 JavaScript 코드에 중단점을 설정할 수 있습니다.

참고 참고:

Windows Vista 또는 Windows 7을 실행하는 경우 관리자 권한으로 Visual Studio를 실행해야 합니다. 이렇게 하지 않으면 중단점이 무시됩니다.

커뮤니티 추가 항목

추가
표시: