Remove try/catch block

BUG=pdfium:28
R=thakis@chromium.org

Review URL: https://codereview.chromium.org/472563002
diff --git a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp b/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
index 8e77cda..4494244 100644
--- a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
+++ b/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
@@ -582,83 +582,79 @@
 FX_BOOL CJPX_Decoder::Init(const unsigned char* src_data, int src_size)
 {
     opj_dparameters_t parameters;
-    try {
+    image = NULL;
+    m_SrcData = src_data;
+    m_SrcSize = src_size;
+    decodeData srcData;
+    srcData.offset  = 0;
+    srcData.src_size = src_size;
+    srcData.src_data = src_data;
+    l_stream = fx_opj_stream_create_memory_stream(&srcData, OPJ_J2K_STREAM_CHUNK_SIZE, 1);
+    if (l_stream == NULL) {
+        return FALSE;
+    }
+    opj_set_default_decoder_parameters(&parameters);
+    parameters.decod_format = 0;
+    parameters.cod_format = 3;
+    if(FXSYS_memcmp32(m_SrcData, "\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a", 12) == 0) {
+        l_codec = opj_create_decompress(OPJ_CODEC_JP2);
+        parameters.decod_format = 1;
+    } else {
+        l_codec = opj_create_decompress(OPJ_CODEC_J2K);
+    }
+    if(!l_codec) {
+        return FALSE;
+    }
+    opj_set_info_handler(l_codec, fx_info_callback, 00);
+    opj_set_warning_handler(l_codec, fx_warning_callback, 00);
+    opj_set_error_handler(l_codec, fx_error_callback, 00);
+    if ( !opj_setup_decoder(l_codec, &parameters) ) {
+        return FALSE;
+    }
+    if(! opj_read_header(l_stream, l_codec, &image)) {
         image = NULL;
-        m_SrcData = src_data;
-        m_SrcSize = src_size;
-        decodeData srcData;
-        srcData.offset  = 0;
-        srcData.src_size = src_size;
-        srcData.src_data = src_data;
-        l_stream = fx_opj_stream_create_memory_stream(&srcData, OPJ_J2K_STREAM_CHUNK_SIZE, 1);
-        if (l_stream == NULL) {
-            return FALSE;
-        }
-        opj_set_default_decoder_parameters(&parameters);
-        parameters.decod_format = 0;
-        parameters.cod_format = 3;
-        if(FXSYS_memcmp32(m_SrcData, "\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a", 12) == 0) {
-            l_codec = opj_create_decompress(OPJ_CODEC_JP2);
-            parameters.decod_format = 1;
-        } else {
-            l_codec = opj_create_decompress(OPJ_CODEC_J2K);
-        }
-        if(!l_codec) {
-            return FALSE;
-        }
-        opj_set_info_handler(l_codec, fx_info_callback, 00);
-        opj_set_warning_handler(l_codec, fx_warning_callback, 00);
-        opj_set_error_handler(l_codec, fx_error_callback, 00);
-        if ( !opj_setup_decoder(l_codec, &parameters) ) {
-            return FALSE;
-        }
-        if(! opj_read_header(l_stream, l_codec, &image)) {
+        return FALSE;
+    }
+    if(this->m_useColorSpace) {
+        image->useColorSpace = 1;
+    } else {
+        image->useColorSpace = 0;
+    }
+    if (!parameters.nb_tile_to_decode) {
+        if (!opj_set_decode_area(l_codec, image, parameters.DA_x0,
+                                    parameters.DA_y0, parameters.DA_x1, parameters.DA_y1)) {
+            opj_image_destroy(image);
             image = NULL;
             return FALSE;
         }
-        if(this->m_useColorSpace) {
-            image->useColorSpace = 1;
-        } else {
-            image->useColorSpace = 0;
-        }
-        if (!parameters.nb_tile_to_decode) {
-            if (!opj_set_decode_area(l_codec, image, parameters.DA_x0,
-                                     parameters.DA_y0, parameters.DA_x1, parameters.DA_y1)) {
-                opj_image_destroy(image);
-                image = NULL;
-                return FALSE;
-            }
-            if (!(opj_decode(l_codec, l_stream, image) && opj_end_decompress(l_codec,	l_stream))) {
-                opj_image_destroy(image);
-                image = NULL;
-                return FALSE;
-            }
-        } else {
-            if (!opj_get_decoded_tile(l_codec, l_stream, image, parameters.tile_index)) {
-                return FALSE;
-            }
-        }
-        opj_stream_destroy(l_stream);
-        l_stream = NULL;
-        if( image->color_space != OPJ_CLRSPC_SYCC
-                && image->numcomps == 3 && image->comps[0].dx == image->comps[0].dy
-                && image->comps[1].dx != 1 ) {
-            image->color_space = OPJ_CLRSPC_SYCC;
-        } else if (image->numcomps <= 2) {
-            image->color_space = OPJ_CLRSPC_GRAY;
-        }
-        if(image->color_space == OPJ_CLRSPC_SYCC) {
-            color_sycc_to_rgb(image);
-        }
-        if(image->icc_profile_buf && !image->useColorSpace) {
-            FX_Free(image->icc_profile_buf);
-            image->icc_profile_buf = NULL;
-            image->icc_profile_len = 0;
-        }
-        if(!image) {
+        if (!(opj_decode(l_codec, l_stream, image) && opj_end_decompress(l_codec,	l_stream))) {
+            opj_image_destroy(image);
+            image = NULL;
             return FALSE;
         }
-    } catch (...) {
+    } else {
+        if (!opj_get_decoded_tile(l_codec, l_stream, image, parameters.tile_index)) {
+            return FALSE;
+        }
+    }
+    opj_stream_destroy(l_stream);
+    l_stream = NULL;
+    if( image->color_space != OPJ_CLRSPC_SYCC
+            && image->numcomps == 3 && image->comps[0].dx == image->comps[0].dy
+            && image->comps[1].dx != 1 ) {
+        image->color_space = OPJ_CLRSPC_SYCC;
+    } else if (image->numcomps <= 2) {
+        image->color_space = OPJ_CLRSPC_GRAY;
+    }
+    if(image->color_space == OPJ_CLRSPC_SYCC) {
+        color_sycc_to_rgb(image);
+    }
+    if(image->icc_profile_buf && !image->useColorSpace) {
+        FX_Free(image->icc_profile_buf);
+        image->icc_profile_buf = NULL;
+        image->icc_profile_len = 0;
+    }
+    if(!image) {
         return FALSE;
     }
     return TRUE;
@@ -676,86 +672,80 @@
     int i, wid, hei, row, col, channel, src;
     FX_BOOL flag;
     FX_LPBYTE pChannel, pScanline, pPixel;
-    try {
-        if(image->comps[0].w != image->x1 || image->comps[0].h != image->y1) {
-            return FALSE;
-        }
-        if(pitch < (int)(image->comps[0].w * 8 * image->numcomps + 31) >> 5 << 2) {
-            return FALSE;
-        }
-        FXSYS_memset8(dest_buf, 0xff, image->y1 * pitch);
-        channel_bufs = FX_Alloc(FX_BYTE*, image->numcomps);
-        if (channel_bufs == NULL) {
-            return FALSE;
-        }
-        adjust_comps = FX_Alloc(int, image->numcomps);
-        if (adjust_comps == NULL) {
-            FX_Free(channel_bufs);
-            return FALSE;
-        }
-        flag = TRUE;
-        for (i = 0; i < (int)image->numcomps; i ++) {
-            channel_bufs[i] = dest_buf + offsets[i];
-            adjust_comps[i] = image->comps[i].prec - 8;
-            if(i > 0) {
-                if(image->comps[i].dx != image->comps[i - 1].dx
-                        || image->comps[i].dy != image->comps[i - 1].dy
-                        || image->comps[i].prec != image->comps[i - 1].prec) {
-                    flag = FALSE;
-                    goto failed;
-                }
-            }
-        }
-        wid = image->comps[0].w;
-        hei = image->comps[0].h;
-        for (channel = 0; channel < (int)image->numcomps; channel++) {
-            pChannel = channel_bufs[channel];
-            if(adjust_comps[channel] < 0) {
-                for(row = 0; row < hei; row++) {
-                    pScanline = pChannel + row * pitch;
-                    for (col = 0; col < wid; col++) {
-                        pPixel = pScanline + col * image->numcomps;
-                        src = image->comps[channel].data[row * wid + col];
-                        src += image->comps[channel].sgnd ? 1 << (image->comps[channel].prec - 1) : 0;
-                        if (adjust_comps[channel] > 0) {
-                            *pPixel = 0;
-                        } else {
-                            *pPixel = (FX_BYTE)(src << -adjust_comps[channel]);
-                        }
-                    }
-                }
-            } else {
-                for(row = 0; row < hei; row++) {
-                    pScanline = pChannel + row * pitch;
-                    for (col = 0; col < wid; col++) {
-                        pPixel = pScanline + col * image->numcomps;
-                        if (!image->comps[channel].data) {
-                            continue;
-                        }
-                        src = image->comps[channel].data[row * wid + col];
-                        src += image->comps[channel].sgnd ? 1 << (image->comps[channel].prec - 1) : 0;
-                        if (adjust_comps[channel] - 1 < 0) {
-                            *pPixel = (FX_BYTE)((src >> adjust_comps[channel]));
-                        } else {
-                            int tmpPixel = (src >> adjust_comps[channel]) + ((src >> (adjust_comps[channel] - 1)) % 2);
-                            if (tmpPixel > 255) {
-                                tmpPixel = 255;
-                            } else if (tmpPixel < 0) {
-                                tmpPixel = 0;
-                            }
-                            *pPixel = (FX_BYTE)tmpPixel;
-                        }
-                    }
-                }
-            }
-        }
-    } catch (...) {
-        if (channel_bufs) {
-            FX_Free(channel_bufs);
-        }
-        FX_Free(adjust_comps);
+
+    if(image->comps[0].w != image->x1 || image->comps[0].h != image->y1) {
         return FALSE;
     }
+    if(pitch < (int)(image->comps[0].w * 8 * image->numcomps + 31) >> 5 << 2) {
+        return FALSE;
+    }
+    FXSYS_memset8(dest_buf, 0xff, image->y1 * pitch);
+    channel_bufs = FX_Alloc(FX_BYTE*, image->numcomps);
+    if (channel_bufs == NULL) {
+        return FALSE;
+    }
+    adjust_comps = FX_Alloc(int, image->numcomps);
+    if (adjust_comps == NULL) {
+        FX_Free(channel_bufs);
+        return FALSE;
+    }
+    flag = TRUE;
+    for (i = 0; i < (int)image->numcomps; i ++) {
+        channel_bufs[i] = dest_buf + offsets[i];
+        adjust_comps[i] = image->comps[i].prec - 8;
+        if(i > 0) {
+            if(image->comps[i].dx != image->comps[i - 1].dx
+                    || image->comps[i].dy != image->comps[i - 1].dy
+                    || image->comps[i].prec != image->comps[i - 1].prec) {
+                flag = FALSE;
+                goto failed;
+            }
+        }
+    }
+    wid = image->comps[0].w;
+    hei = image->comps[0].h;
+    for (channel = 0; channel < (int)image->numcomps; channel++) {
+        pChannel = channel_bufs[channel];
+        if(adjust_comps[channel] < 0) {
+            for(row = 0; row < hei; row++) {
+                pScanline = pChannel + row * pitch;
+                for (col = 0; col < wid; col++) {
+                    pPixel = pScanline + col * image->numcomps;
+                    src = image->comps[channel].data[row * wid + col];
+                    src += image->comps[channel].sgnd ? 1 << (image->comps[channel].prec - 1) : 0;
+                    if (adjust_comps[channel] > 0) {
+                        *pPixel = 0;
+                    } else {
+                        *pPixel = (FX_BYTE)(src << -adjust_comps[channel]);
+                    }
+                }
+            }
+        } else {
+            for(row = 0; row < hei; row++) {
+                pScanline = pChannel + row * pitch;
+                for (col = 0; col < wid; col++) {
+                    pPixel = pScanline + col * image->numcomps;
+                    if (!image->comps[channel].data) {
+                        continue;
+                    }
+                    src = image->comps[channel].data[row * wid + col];
+                    src += image->comps[channel].sgnd ? 1 << (image->comps[channel].prec - 1) : 0;
+                    if (adjust_comps[channel] - 1 < 0) {
+                        *pPixel = (FX_BYTE)((src >> adjust_comps[channel]));
+                    } else {
+                        int tmpPixel = (src >> adjust_comps[channel]) + ((src >> (adjust_comps[channel] - 1)) % 2);
+                        if (tmpPixel > 255) {
+                            tmpPixel = 255;
+                        } else if (tmpPixel < 0) {
+                            tmpPixel = 0;
+                        }
+                        *pPixel = (FX_BYTE)tmpPixel;
+                    }
+                }
+            }
+        }
+    }
+
     FX_Free(channel_bufs);
     FX_Free(adjust_comps);
     return TRUE;
diff --git a/fpdfsdk/include/javascript/JS_Define.h b/fpdfsdk/include/javascript/JS_Define.h
index ba978e9..108c1e2 100644
--- a/fpdfsdk/include/javascript/JS_Define.h
+++ b/fpdfsdk/include/javascript/JS_Define.h
@@ -107,19 +107,9 @@
 	ASSERT(pObj != NULL);\
 	JS_ErrorString sError;\
 	FX_BOOL bRet = FALSE;\
-	try\
-	{\
-		MEMLEAKCHECK_1();\
-		bRet = pObj->prop_name(cc, value, sError);\
-		MEMLEAKCHECK_2(class_name, prop_name);\
-	}\
-	catch (...)\
-	{\
-		CFX_ByteString cbName;\
-		cbName.Format("%s.%s", #class_name, #prop_name);\
-		JS_Error(NULL,CFX_WideString::FromLocal(cbName), L"Unknown error is catched!");\
-		return ;\
-	}\
+	MEMLEAKCHECK_1();\
+	bRet = pObj->prop_name(cc, value, sError);\
+	MEMLEAKCHECK_2(class_name, prop_name);\
 	if (bRet)\
 	{\
 		info.GetReturnValue().Set((v8::Handle<v8::Value>)value);\
@@ -153,19 +143,9 @@
 	ASSERT(pObj != NULL);\
 	JS_ErrorString sError;\
 	FX_BOOL bRet = FALSE;\
-	try\
-	{\
-		MEMLEAKCHECK_1();\
-		bRet = pObj->prop_name(cc, propValue, sError);\
-		MEMLEAKCHECK_2(class_name, prop_name);\
-	}\
-	catch (...)\
-	{\
-		CFX_ByteString cbName;\
-		cbName.Format("%s.%s", #class_name, #prop_name);\
-		JS_Error(NULL,CFX_WideString::FromLocal(cbName), L"Unknown error is catched!");\
-		return ;\
-	}\
+	MEMLEAKCHECK_1();\
+	bRet = pObj->prop_name(cc, propValue, sError);\
+	MEMLEAKCHECK_2(class_name, prop_name);\
 	if (bRet)\
 	{\
 		return ;\
@@ -208,19 +188,9 @@
 	ASSERT(pObj != NULL);\
 	JS_ErrorString sError;\
 	FX_BOOL bRet = FALSE;\
-	try\
-	{\
-		MEMLEAKCHECK_1();\
-		bRet = pObj->method_name(cc, parameters, valueRes, sError);\
-		MEMLEAKCHECK_2(class_name, method_name);\
-	}\
-	catch (...)\
-	{\
-		CFX_ByteString cbName;\
-		cbName.Format("%s.%s", #class_name, #method_name);\
-		JS_Error(NULL, CFX_WideString::FromLocal(cbName), L"Unknown error is catched!");\
-		return ;\
-	}\
+	MEMLEAKCHECK_1();\
+	bRet = pObj->method_name(cc, parameters, valueRes, sError);\
+	MEMLEAKCHECK_2(class_name, method_name);\
 	if (bRet)\
 	{\
 		info.GetReturnValue().Set(valueRes.ToJSValue());\
@@ -370,16 +340,9 @@
 	class_alternate* pObj = (class_alternate*)pJSObj->GetEmbedObject();\
 	ASSERT(pObj != NULL);\
 	FX_BOOL bRet = FALSE;\
-	try\
-	{\
-		MEMLEAKCHECK_1();\
-		bRet = pObj->QueryProperty((FX_LPCWSTR)propname);\
-		MEMLEAKCHECK_2(class_name, (FX_LPCWSTR)prop_name);\
-	}\
-	catch (...)\
-	{\
-		return ;\
-	}\
+	MEMLEAKCHECK_1();\
+	bRet = pObj->QueryProperty((FX_LPCWSTR)propname);\
+	MEMLEAKCHECK_2(class_name, (FX_LPCWSTR)prop_name);\
 	if (bRet)\
 	{\
 		info.GetReturnValue().Set(0x004);\
@@ -412,19 +375,9 @@
 	ASSERT(pObj != NULL);\
 	JS_ErrorString sError;\
 	FX_BOOL bRet = FALSE;\
-	try\
-	{\
-		MEMLEAKCHECK_1();\
-		bRet = pObj->DoProperty(cc, (FX_LPCWSTR)propname, value, sError);\
-		MEMLEAKCHECK_2(class_name, L"GetProperty");\
-	}\
-	catch (...)\
-	{\
-		CFX_ByteString cbName;\
-		cbName.Format("%s.%s", #class_name, L"GetProperty");\
-		JS_Error(NULL,CFX_WideString::FromLocal(cbName), L"Unknown error is catched!");\
-		return ;\
-	}\
+	MEMLEAKCHECK_1();\
+	bRet = pObj->DoProperty(cc, (FX_LPCWSTR)propname, value, sError);\
+	MEMLEAKCHECK_2(class_name, L"GetProperty");\
 	if (bRet)\
 	{\
 		info.GetReturnValue().Set((v8::Handle<v8::Value>)value);\
@@ -460,19 +413,9 @@
 	ASSERT(pObj != NULL);\
 	JS_ErrorString sError;\
 	FX_BOOL bRet = FALSE;\
-	try\
-	{\
-		MEMLEAKCHECK_1();\
-		bRet = pObj->DoProperty(cc, (FX_LPCWSTR)propname, PropValue, sError);\
-		MEMLEAKCHECK_2(class_name,L"PutProperty");\
-	}\
-	catch (...)\
-	{\
-		CFX_ByteString cbName;\
-		cbName.Format("%s.%s", #class_name, "PutProperty");\
-		JS_Error(NULL,CFX_WideString::FromLocal(cbName), L"Unknown error is catched!");\
-		return ;\
-	}\
+	MEMLEAKCHECK_1();\
+	bRet = pObj->DoProperty(cc, (FX_LPCWSTR)propname, PropValue, sError);\
+	MEMLEAKCHECK_2(class_name,L"PutProperty");\
 	if (bRet)\
 	{\
 		return ;\
@@ -505,18 +448,9 @@
 	ASSERT(pObj != NULL);\
 	JS_ErrorString sError;\
 	FX_BOOL bRet = FALSE;\
-	try\
-	{\
-		MEMLEAKCHECK_1();\
-		bRet = pObj->DelProperty(cc, (FX_LPCWSTR)propname, sError);\
-		MEMLEAKCHECK_2(class_name,L"DelProperty");\
-	}\
-	catch (...)\
-	{\
-		CFX_ByteString cbName;\
-		cbName.Format("%s.%s", #class_name, "DelProperty");\
-		return ;\
-	}\
+	MEMLEAKCHECK_1();\
+	bRet = pObj->DelProperty(cc, (FX_LPCWSTR)propname, sError);\
+	MEMLEAKCHECK_2(class_name,L"DelProperty");\
 	if (bRet)\
 	{\
 		return ;\
@@ -609,19 +543,9 @@
 	ASSERT(pObj != NULL);\
 	JS_ErrorString sError;\
 	FX_BOOL bRet = FALSE;\
-	try\
-	{\
-		MEMLEAKCHECK_1();\
-		bRet = pObj->method_name(cc, parameters, valueRes, sError);\
-		MEMLEAKCHECK_2(class_name, method_name);\
-	}\
-	catch (...)\
-	{\
-		CFX_ByteString cbName;\
-		cbName.Format("%s.%s", #class_name, #method_name);\
-		JS_Error(NULL, CFX_WideString::FromLocal(cbName), L"Unknown error is catched!");\
-		return ;\
-	}\
+	MEMLEAKCHECK_1();\
+	bRet = pObj->method_name(cc, parameters, valueRes, sError);\
+	MEMLEAKCHECK_2(class_name, method_name);\
 	if (bRet)\
 	{\
 		info.GetReturnValue().Set(valueRes.ToJSValue());\
diff --git a/fpdfsdk/src/fpdf_progressive.cpp b/fpdfsdk/src/fpdf_progressive.cpp
index b6691af..2490df8 100644
--- a/fpdfsdk/src/fpdf_progressive.cpp
+++ b/fpdfsdk/src/fpdf_progressive.cpp
@@ -49,14 +49,7 @@
 #endif
 	IFSDK_PAUSE_Adapter IPauseAdapter(pause);
 	
-	if (flags & FPDF_NO_CATCH)
-		Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,FALSE, &IPauseAdapter);
-	else {
-		try {
-			Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,FALSE, &IPauseAdapter);
-			}
-		catch (...){}
-	}
+	Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,FALSE, &IPauseAdapter);
 
 	if ( pContext->m_pRenderer )
 	{
diff --git a/fpdfsdk/src/fpdftext.cpp b/fpdfsdk/src/fpdftext.cpp
index 869ec48..264631b 100644
--- a/fpdfsdk/src/fpdftext.cpp
+++ b/fpdfsdk/src/fpdftext.cpp
@@ -18,18 +18,9 @@
 {
 	if (!page) return NULL;
 	IPDF_TextPage* textpage=NULL;
-	try
-	{
-		CPDF_ViewerPreferences viewRef(((CPDF_Page*)page)->m_pDocument);
-		textpage=IPDF_TextPage::CreateTextPage((CPDF_Page*)page,viewRef.IsDirectionR2L());
-		textpage->ParseTextPage();
-	}
-	catch (...)
-	{
-		if (textpage)
-			delete textpage;
-		return NULL;
-	}
+	CPDF_ViewerPreferences viewRef(((CPDF_Page*)page)->m_pDocument);
+	textpage=IPDF_TextPage::CreateTextPage((CPDF_Page*)page,viewRef.IsDirectionR2L());
+	textpage->ParseTextPage();
 	return textpage;
 }
 DLLEXPORT void STDCALL FPDFText_ClosePage(FPDF_TEXTPAGE text_page)
@@ -159,18 +150,9 @@
 {
 	if (!text_page) return NULL;
 	IPDF_TextPageFind* textpageFind=NULL;
-	try
-	{
-		textpageFind=IPDF_TextPageFind::CreatePageFind((IPDF_TextPage*)text_page);
-		FX_STRSIZE len = CFX_WideString::WStringLength(findwhat);
-		textpageFind->FindFirst(CFX_WideString::FromUTF16LE(findwhat, len),flags,start_index);
-	}
-	catch (...)
-	{
-		if (textpageFind)
-			delete textpageFind;
-		return NULL;		
-	}
+	textpageFind=IPDF_TextPageFind::CreatePageFind((IPDF_TextPage*)text_page);
+	FX_STRSIZE len = CFX_WideString::WStringLength(findwhat);
+	textpageFind->FindFirst(CFX_WideString::FromUTF16LE(findwhat, len),flags,start_index);
 	return textpageFind;
 }
 DLLEXPORT FPDF_BOOL	STDCALL FPDFText_FindNext(FPDF_SCHHANDLE handle)
@@ -210,17 +192,8 @@
 {
 	if (!text_page) return NULL;
 	IPDF_LinkExtract* pageLink=NULL;
-	try
-	{
-		pageLink=IPDF_LinkExtract::CreateLinkExtract();
-		pageLink->ExtractLinks((IPDF_TextPage*)text_page);
-	}
-	catch (...)
-	{
-		if (pageLink)
-			delete pageLink;
-		return NULL;
-	}
+	pageLink=IPDF_LinkExtract::CreateLinkExtract();
+	pageLink->ExtractLinks((IPDF_TextPage*)text_page);
 	return pageLink;
 }
 DLLEXPORT int STDCALL FPDFLink_CountWebLinks(FPDF_PAGELINK link_page)
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
index 23d4493..2e1bca3 100644
--- a/fpdfsdk/src/fpdfview.cpp
+++ b/fpdfsdk/src/fpdfview.cpp
@@ -272,17 +272,11 @@
 {
 	CPDF_Parser* pParser = FX_NEW CPDF_Parser;
 	pParser->SetPassword(password);
-	try {
-		FX_DWORD err_code = pParser->StartParse((FX_LPCSTR)file_path);
-		if (err_code) {
-			delete pParser;
-			ProcessParseError(err_code);
-			return NULL;
-		}
-	}
-	catch (...) {
+
+	FX_DWORD err_code = pParser->StartParse((FX_LPCSTR)file_path);
+	if (err_code) {
 		delete pParser;
-		SetLastError(FPDF_ERR_UNKNOWN);
+		ProcessParseError(err_code);
 		return NULL;
 	}
 	return pParser->GetDocument();
@@ -318,23 +312,16 @@
 {
 	CPDF_Parser* pParser = FX_NEW CPDF_Parser;
 	pParser->SetPassword(password);
-	try {
-		CMemFile* pMemFile = FX_NEW CMemFile((FX_BYTE*)data_buf, size);
-		FX_DWORD err_code = pParser->StartParse(pMemFile);
-		if (err_code) {
-			delete pParser;
-			ProcessParseError(err_code);
-			return NULL;
-		}
-		CPDF_Document * pDoc = NULL;
-		pDoc = pParser?pParser->GetDocument():NULL;
-		CheckUnSupportError(pDoc, err_code);
-	}
-	catch (...) {
+	CMemFile* pMemFile = FX_NEW CMemFile((FX_BYTE*)data_buf, size);
+	FX_DWORD err_code = pParser->StartParse(pMemFile);
+	if (err_code) {
 		delete pParser;
-		SetLastError(FPDF_ERR_UNKNOWN);
+		ProcessParseError(err_code);
 		return NULL;
 	}
+	CPDF_Document * pDoc = NULL;
+	pDoc = pParser?pParser->GetDocument():NULL;
+	CheckUnSupportError(pDoc, err_code);
 	return pParser->GetDocument();
 }
 
@@ -343,22 +330,15 @@
 	CPDF_Parser* pParser = FX_NEW CPDF_Parser;
 	pParser->SetPassword(password);
 	CPDF_CustomAccess* pFile = FX_NEW CPDF_CustomAccess(pFileAccess);
-	try {
-		FX_DWORD err_code = pParser->StartParse(pFile);
-		if (err_code) {
-			delete pParser;
-			ProcessParseError(err_code);
-			return NULL;
-		}
-		CPDF_Document * pDoc = NULL;
-		pDoc = pParser?pParser->GetDocument():NULL;
-		CheckUnSupportError(pDoc, err_code);
-	}
-	catch (...) {
+	FX_DWORD err_code = pParser->StartParse(pFile);
+	if (err_code) {
 		delete pParser;
-		SetLastError(FPDF_ERR_UNKNOWN);
+		ProcessParseError(err_code);
 		return NULL;
 	}
+	CPDF_Document * pDoc = NULL;
+	pDoc = pParser?pParser->GetDocument():NULL;
+	CheckUnSupportError(pDoc, err_code);
 	return pParser->GetDocument();
 }
 
@@ -403,13 +383,7 @@
 	if (pDict == NULL) return NULL;
 	CPDF_Page* pPage = FX_NEW CPDF_Page;
 	pPage->Load(pDoc, pDict);
-	try {
-		pPage->ParseContent();
-	}
-	catch (...) {
-		delete pPage;
-		return NULL;
-	}
+	pPage->ParseContent();
 	
 //	CheckUnSupportError(pDoc, 0);
 
@@ -473,14 +447,9 @@
 	}
 	else
 	    pContext->m_pDevice = FX_NEW CFX_WindowsDevice(dc);
-	if (flags & FPDF_NO_CATCH)
-		Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,TRUE,NULL);
-	else {
-		try {
-			Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,TRUE,NULL);
-		} catch (...) {
-		}
-	}
+
+	Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,TRUE,NULL);
+
 	if (bBackgroundAlphaNeeded) 
 	{
 		if (pBitmap)
@@ -559,14 +528,7 @@
 #endif
 
 	// output to bitmap device
-	if (flags & FPDF_NO_CATCH)
-		Func_RenderPage(pContext, page, start_x - rect.left, start_y - rect.top, size_x, size_y, rotate, flags);
-	else {
-		try {
-			Func_RenderPage(pContext, page, start_x - rect.left, start_y - rect.top, size_x, size_y, rotate, flags);
-		} catch (...) {
-		}
-	}
+	Func_RenderPage(pContext, page, start_x - rect.left, start_y - rect.top, size_x, size_y, rotate, flags);
 
 #ifdef DEBUG_TRACE
 	CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering");
@@ -634,14 +596,8 @@
 	else
 		((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
 #endif
-	if (flags & FPDF_NO_CATCH)
-		Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,TRUE,NULL);
-	else {
-		try {
-			Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,TRUE,NULL);
-		} catch (...) {
-		}
-	}
+
+	Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,TRUE,NULL);
 
 	delete pContext;
 	pPage->RemovePrivateData((void*)1);
diff --git a/fpdfsdk/src/javascript/JS_Context.cpp b/fpdfsdk/src/javascript/JS_Context.cpp
index e34ffb5..a83e1e0 100644
--- a/fpdfsdk/src/javascript/JS_Context.cpp
+++ b/fpdfsdk/src/javascript/JS_Context.cpp
@@ -68,41 +68,32 @@
 	FXJSErr error ={NULL,NULL, 0};
 	int nRet = 0;	
 
-	try
-	{	
-		if (script.GetLength() > 0)
+	if (script.GetLength() > 0)
+	{
+		if (nMode == 0)
 		{
-			if (nMode == 0)
-			{		
-				nRet = JS_Execute(*m_pRuntime, this, script, script.GetLength(), &error);
-			}
-			else
-			{
-				nRet = JS_Parse(*m_pRuntime, this, script, script.GetLength(), &error);
-			}
+			nRet = JS_Execute(*m_pRuntime, this, script, script.GetLength(), &error);
 		}
-
-		if (nRet < 0)
+		else
 		{
-			CFX_WideString sLine;
-			sLine.Format((FX_LPCWSTR)L"[ Line: %05d { %s } ] : %s",error.linnum-1,error.srcline,error.message);
+			nRet = JS_Parse(*m_pRuntime, this, script, script.GetLength(), &error);
+		}
+	}
+
+	if (nRet < 0)
+	{
+		CFX_WideString sLine;
+		sLine.Format((FX_LPCWSTR)L"[ Line: %05d { %s } ] : %s",error.linnum-1,error.srcline,error.message);
 
 //			TRACE(L"/* -------------- JS Error -------------- */\n");
 //			TRACE(sLine);
 //			TRACE(L"\n");
-			//CFX_ByteString sTemp = CFX_ByteString::FromUnicode(error.message);
-			info += sLine;
-		}
-		else
-		{
-			info = JSGetStringFromID(this, IDS_STRING_RUN);
-		}		
-
+		//CFX_ByteString sTemp = CFX_ByteString::FromUnicode(error.message);
+		info += sLine;
 	}
-	catch (...)
+	else
 	{
-		info = JSGetStringFromID(this, IDS_STRING_UNHANDLED);
-		nRet = -1;
+		info = JSGetStringFromID(this, IDS_STRING_RUN);
 	}
 
 	m_pRuntime->RemoveEventInLoop(m_pEventHandler->TargetName(), m_pEventHandler->EventType());