7 c o u t < < " E x c e p t i o n t h r o w n i n f u n ( ) " < < e n d l ;
8 throw e x c e p t i o n ( ) ;
9 c o u t < < " T h i s s h o u l d n o t b e p r i n t e d " < < e n d l ;
10
}
11
catch ( e x c e p t i o n &
e x ) {
12 c o u t < < " E x c e p t i o n h a n d l e d i n f u n ( ) " < < e n d l ;
13
throw;
14
}
15
c o u t < < " T h i s s h o u l d n o t b e p r i n t e d " < < e n d l ;
16
}
17 i n t m a i n ( i n t a r g c , char * a r g v [ ] ) {
18
19 t r y {
20 f u n ( ) ;
21 c o u t < < " T h i s s h o u l d n o t b e p r i n t e d " < < e n d l ;
22 }
23 catch ( const e x c e p t i o n & e x ) {
24 c o u t < < " E x c e p t i o n h a n d l e d i n m a i n ( ) " < < e n d l ;
25 }
26
27 c o u t < < " P r o g r a m c a n c o n t i n u e " < < e n d l ;
28
29 re turn 0 ;
30 }
59. Проблеми при присвояване и съвместимост на типовете.
Макар С# да не инициализира автоматично локалните променливи, компилаторът предупреждава за неправилното им използване. Например следният код ще предизвика грешка при опит за компилация:
Преобразуването на типове също е безопасно. CLR не позволява да се извърши невалидно преобразуване на типове – да се преобразува променлива от даден тип към променлива от тип, който не е съвместим с първия. При опит да бъде направено това, възниква изключение.
Неявното преобразуване на типове е разрешено само за съвместими типове, когато не е възможна загуба на информация. При явно преобразуване на типове, ако те не са съвместими, се хвърля InvalidCastException по време на изпълнение. Например следният код предизвиква изключение по време на изпълнение:
18. Windows Presentation Foundation (WPF).XAML.Контроли и логическо дърво. Примери