Microsoft MVP성태의 닷넷 이야기
전역 예외처리에 대해 질문있습니다. [링크 복사], [링크+제목 복사],
조회: 19594
글쓴 사람
다연아빠 (whee72 at google.com)
홈페이지
첨부 파일
 

성태님 안녕하십니까? 저는 지방에서 SI 업계에 종사하는 초보 개발자 입니다.
궁금한걸 못참아 글을 쓰게되었습니다.
메인 폼에서 발생하는 예외를 처리 방법을 바꾸고 싶은데
아무리 찾아보고 고민해도 방법을 몰라 글을 쓰게 되었습니다.
구글링을 하면 찾을 수 있는 일반적인 방법이고 저도 이렇게 쓰고 있었습니다.
----program.cs-------
        [STAThread]
        static void Main()
        {
            Application.ThreadException += new ThreadExceptionEventHandler(Form1_UIThreadException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        public static void Form1_UIThreadException(object sender, ThreadExceptionEventArgs t)
        {
            MessageBox.Show("Error");
        }

헌데 예외처리를 클래스 메소드에서 처리하는 방법으로 구현한 코드를 봤습니다.
SetControl메소드에서는 매개변수로 Control을 받구요.
컨트롤을 넘겨받아 어떻게 메인폼에서 발생하는 예외를 다 받을 수 있는지 도저히 모르겠습니다.
 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            ExceptionClass exClass = new ExceptionClass();
            Form1 frm = new Form1();
            exClass.SetControl(frm);
            Application.Run(frm);
        }

--------ExceptionClass.cs------------
   public class ExceptionClass
    {
        public void SetControl(Control ctrl)
        {
             //여기서 대체 무슨일이 일어나는 겁니까?
        }
    }


ps C# 6.0 책 잘봤습니다.
현역개발자라 6.0에서 추가된 내용만 볼려고 샀는데
기초부터 고급까지 설명을 잘 해놓으셔서 처음부터 정독했습니다.
좋은 글 감사합니다.








[최초 등록일: ]
[최종 수정일: 7/23/2017]


비밀번호

댓글 작성자
 



2017-07-23 01시29분
.NET Reflector 같은 디컴파일러 도구를 이용하면 SetControl에서 발생하는 것이 뭔지 알 수 있을 것입니다. 마법은 없기 때문에, 파악하실 수 있을 것입니다.
정성태
2017-07-24 02시03분
[다연아빠] 디컴파일러를 사용 할 수 없는 상황입니다 하하;;
[guest]
2017-07-24 02시56분
이런 경우에는 상상력이 과도한 문제일 수 있습니다. ExceptionClass.SetControl이 결국 내부적으로는 Application.ThreadException을 호출하는 걸 수도 있습니다. 그건 그렇고... 그렇다면 SetControl이 MainForm의 예외를 처리한다는 것은 어떻게 아신 건가요? 그냥 매뉴얼에 그렇게 써 있는 건가요?
정성태

... 46  47  48  49  50  51  52  53  54  55  [56]  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
1288박주만7/8/201431073C# 서비스 기반 데이터베이스(mdf) & InstallShield Limited Edition 설치 및 배포 [2]파일 다운로드1
1287김용환7/8/201428943오라클 db 사용관련 문의입니다. [4]파일 다운로드1
1286C#조으다7/8/201418882WebBrowser 공유기 관리 웹 페이지 인증 [3]
1285C#조으다7/5/201419162IE DocumentComplete 이벤트가 발생되지 않습니다. [2]
1284(non...7/4/201419546(글쓴이의 요청으로 삭제합니다.) [3]
1283김영대7/3/201422375안녕하십니까 정성태님 죄송하지만 SmartClient 에 관한 질문이 있습니다. [9]
1282(non...7/2/201419314(글쓴이의 요청으로 삭제합니다.) [2]
1281(non...7/1/201420497(글쓴이의 요청으로 삭제합니다.) [4]
1280동동이6/25/201420148안녕하세요. ocx의 비동기 또는 쓰레드에서 호출 [1]
1279(non...6/23/201420471(글쓴이의 요청으로 삭제합니다.) [17]
1278이상식6/19/201421870.net DLL 내 자바스크립트를 수정 또는 재정의 할 수 있을까요? [3]
1277김솔지6/18/201418174silverlight에서 datagrid, listbox질문이여 [2]
1276정우석6/16/201417880쿠키 [1]
1274김솔지6/10/201422286배포 페이지 url을 얻고 싶습니다. [8]
1272이훈모6/7/201416871정말 어려운 상황에 직면했습니다. [1]
1270Jong...6/2/201427457C#과 C++을 이용한 Image 처리. [13]
1269김아영5/29/201417918InitializeComponent 함수 호출 지연 현상 [5]
1268솔솔5/27/201417321smart client [1]
1266김솔지5/22/201419773clickonce 수정에 대해 알고싶습니다. [2]
1265이은아5/22/201424297DataGridView 헤더를 두줄이상으로 하고싶습니다. [1]파일 다운로드1
1264김인호5/18/201423117소스코드 및 예제그림 zip 파일 [1]
1263이영종5/15/201419810159페이지 오타인것 같습니다 [5]
1262(non...5/4/201420600(글쓴이의 요청으로 삭제합니다.) [10]
1261이근주5/4/201418105다시 한번 질문드릴께요. [2]
1259이근주5/1/201418059도서 오류인 것 같네요.. [1]
1258최세정4/28/201420653안녕하세요~php module 오류로 고민하다가 여기까지 왔네요..ㅜㅜ [2]
... 46  47  48  49  50  51  52  53  54  55  [56]  57  58  59  60  ...