Skip to content

Commit d1bd87b

Browse files
author
maebahesioru
committed
fix: downgrade TargetClosedError from CRITICAL to WARNING
- initialization: outer exception handler skips CRITICAL for browser-closed errors - app.py: Application startup failed logs WARNING instead of CRITICAL for browser-closed - model_management: UI state errors log DEBUG instead of ERROR for browser-closed
1 parent b0536a1 commit d1bd87b

3 files changed

Lines changed: 21 additions & 7 deletions

File tree

src/api/app.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,10 @@ async def lifespan(app: FastAPI):
175175
server.is_initializing = False
176176
yield
177177
except Exception as e:
178-
logger.critical(f'Application startup failed: {e}', exc_info=True)
178+
if 'Target page, context or browser has been closed' in str(e):
179+
logger.warning(f'Application startup failed (browser closed): {e}')
180+
else:
181+
logger.critical(f'Application startup failed: {e}', exc_info=True)
179182
await _shutdown_resources()
180183
raise RuntimeError(f'Application startup failed: {e}') from e
181184
finally:

src/browser/initialization.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -347,16 +347,21 @@ async def _initialize_page_logic(browser: AsyncBrowser):
347347
logger.error(f'页面初始化失败:核心输入区域未在预期时间内变为可见。最后的 URL 是 {found_page.url}', exc_info=True)
348348
raise RuntimeError(f'页面初始化失败:核心输入区域未在预期时间内变为可见。最后的 URL 是 {found_page.url}') from input_visible_err
349349
except Exception as e_init_page:
350-
logger.critical(f'❌ 页面逻辑初始化期间发生严重意外错误: {e_init_page}', exc_info=True)
350+
is_browser_closed = 'Target page, context or browser has been closed' in str(e_init_page)
351+
if is_browser_closed:
352+
logger.warning(f'页面初始化时浏览器已关闭: {e_init_page}')
353+
else:
354+
logger.critical(f'❌ 页面逻辑初始化期间发生严重意外错误: {e_init_page}', exc_info=True)
351355
if temp_context:
352356
try:
353357
logger.info(f' 尝试关闭临时的浏览器上下文 due to initialization error.')
354358
await temp_context.close()
355359
logger.info(' ✅ 临时浏览器上下文已关闭。')
356360
except Exception as close_err:
357-
logger.warning(f' ⚠️ 关闭临时浏览器上下文时出错: {close_err}')
358-
from .operations import save_error_snapshot
359-
await save_error_snapshot('init_unexpected_error')
361+
logger.debug(f' 关闭临时浏览器上下文时出错: {close_err}')
362+
if not is_browser_closed:
363+
from .operations import save_error_snapshot
364+
await save_error_snapshot('init_unexpected_error')
360365
raise RuntimeError(f'页面初始化意外错误: {e_init_page}') from e_init_page
361366

362367
async def _close_page_logic():

src/browser/model_management.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ async def _verify_ui_state_settings(page: AsyncPage, req_id: str='unknown') -> d
2929
logger.error(f'[{req_id}] ❌ 解析localStorage JSON失败: {e}')
3030
return {'exists': False, 'isAdvancedOpen': None, 'areToolsOpen': None, 'needsUpdate': True, 'error': f'JSON解析失败: {e}'}
3131
except Exception as e:
32-
logger.error(f'[{req_id}] ❌ 验证UI状态设置时发生错误: {e}')
32+
if 'Target page, context or browser has been closed' in str(e):
33+
logger.debug(f'[{req_id}] UI状态验证时浏览器已关闭')
34+
else:
35+
logger.error(f'[{req_id}] ❌ 验证UI状态设置时发生错误: {e}')
3336
return {'exists': False, 'isAdvancedOpen': None, 'areToolsOpen': None, 'needsUpdate': True, 'error': f'验证失败: {e}'}
3437

3538
async def _force_ui_state_settings(page: AsyncPage, req_id: str='unknown') -> bool:
@@ -84,7 +87,10 @@ async def _force_ui_state_settings(page: AsyncPage, req_id: str='unknown') -> bo
8487
return False
8588

8689
except Exception as e:
87-
logger.error(f'[{req_id}] ❌ 强制设置UI状态错误: {e}')
90+
if 'Target page, context or browser has been closed' in str(e):
91+
logger.debug(f'[{req_id}] 强制设置UI时浏览器已关闭')
92+
else:
93+
logger.error(f'[{req_id}] ❌ 强制设置UI状态错误: {e}')
8894
return False
8995

9096
async def _force_ui_state_with_retry(page: AsyncPage, req_id: str='unknown', max_retries: int=3, retry_delay: float=1.0) -> bool:

0 commit comments

Comments
 (0)